diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c index 44ed00924e..9d11c9e198 100644 --- a/gst-libs/gst/gl/gstglcolorconvert.c +++ b/gst-libs/gst/gl/gstglcolorconvert.c @@ -935,12 +935,16 @@ _init_supported_formats (GstGLContext * context, gboolean output, } if (!context || (gst_gl_format_is_supported (context, GST_GL_R16) && - gst_gl_format_is_supported (context, GST_GL_RG16))) + gst_gl_format_is_supported (context, GST_GL_RG16))) { #if G_BYTE_ORDER == G_LITTLE_ENDIAN _append_value_string_list (supported_formats, "P010_10LE", "P016_LE", NULL); #else _append_value_string_list (supported_formats, "P010_10BE", "P016_BE", NULL); #endif + } + + if (!context || (gst_gl_format_is_supported (context, GST_GL_RG16))) + _append_value_string_list (supported_formats, "Y210", NULL); } /* copies the given caps */ @@ -1530,6 +1534,7 @@ _get_n_textures (GstVideoFormat v_format) case GST_VIDEO_FORMAT_BGR10A2_LE: case GST_VIDEO_FORMAT_RGB10A2_LE: case GST_VIDEO_FORMAT_Y410: + case GST_VIDEO_FORMAT_Y210: return 1; case GST_VIDEO_FORMAT_NV12: case GST_VIDEO_FORMAT_NV21: @@ -1681,6 +1686,16 @@ _YUV_to_RGB (GstGLColorConvert * convert) info->shader_tex_names[0] = "Ytex"; break; } + case GST_VIDEO_FORMAT_Y210: + { + info->templ = &templ_YUY2_UYVY_to_RGB; + info->frag_body = + g_strdup_printf (templ_YUY2_UYVY_to_RGB_BODY, 'r', 'g', 'g', + 'g', 'a', pixel_order[0], pixel_order[1], pixel_order[2], + pixel_order[3]); + info->shader_tex_names[0] = "Ytex"; + break; + } case GST_VIDEO_FORMAT_NV12: case GST_VIDEO_FORMAT_NV16: { @@ -1799,6 +1814,7 @@ _RGB_to_YUV (GstGLColorConvert * convert) } break; case GST_VIDEO_FORMAT_YUY2: + case GST_VIDEO_FORMAT_Y210: info->templ = &templ_RGB_to_YUY2_UYVY; info->frag_body = g_strdup_printf (templ_RGB_to_YUY2_UYVY_BODY, pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3], diff --git a/gst-libs/gst/gl/gstglcolorconvert.h b/gst-libs/gst/gl/gstglcolorconvert.h index 1fb63765cc..6ce211917f 100644 --- a/gst-libs/gst/gl/gstglcolorconvert.h +++ b/gst-libs/gst/gl/gstglcolorconvert.h @@ -95,7 +95,7 @@ struct _GstGLColorConvertClass #define GST_GL_COLOR_CONVERT_FORMATS "{ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, " \ "xBGR, ARGB, ABGR, Y444, I420, YV12, Y42B, " \ - "Y41B, NV12, NV21, NV16, NV61, YUY2, UYVY, AYUV, " \ + "Y41B, NV12, NV21, NV16, NV61, YUY2, UYVY, Y210, AYUV, " \ "VUYA, Y410, GRAY8, GRAY16_LE, GRAY16_BE, " \ "RGB16, BGR16, ARGB64 " COLOR_CONVERT_EXT_FORMATS "}" diff --git a/gst-libs/gst/gl/gstglformat.c b/gst-libs/gst/gl/gstglformat.c index 2cb6dcb8e0..303951f31a 100644 --- a/gst-libs/gst/gl/gstglformat.c +++ b/gst-libs/gst/gl/gstglformat.c @@ -211,6 +211,8 @@ gst_gl_format_from_video_info (GstGLContext * context, GstVideoInfo * vinfo, case GST_VIDEO_FORMAT_P016_LE: case GST_VIDEO_FORMAT_P016_BE: return plane == 0 ? GST_GL_R16 : GST_GL_RG16; + case GST_VIDEO_FORMAT_Y210: + return GST_GL_RG16; default: n_plane_components = 4; g_assert_not_reached (); diff --git a/gst-libs/gst/gl/gstglmemory.h b/gst-libs/gst/gl/gstglmemory.h index ec12567778..005e1ed783 100644 --- a/gst-libs/gst/gl/gstglmemory.h +++ b/gst-libs/gst/gl/gstglmemory.h @@ -58,7 +58,7 @@ GType gst_gl_memory_allocator_get_type(void); #define GST_GL_MEMORY_VIDEO_FORMATS_STR \ "{ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, " \ - "AYUV, VUYA, Y410, I420, YV12, NV12, NV21, NV16, NV61, YUY2, UYVY, Y41B, " \ + "AYUV, VUYA, Y410, I420, YV12, NV12, NV21, NV16, NV61, YUY2, UYVY, Y210, Y41B, " \ "Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE, ARGB64" MEMORY_VIDEO_EXT_FORMATS "}" /**