lavd/opengl_enc: add gray8/16 formats
authorLukasz Marek <lukasz.m.luki@gmail.com>
Sat, 8 Feb 2014 02:39:34 +0000 (03:39 +0100)
committerLukasz Marek <lukasz.m.luki@gmail.com>
Thu, 13 Feb 2014 22:33:05 +0000 (23:33 +0100)
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
libavdevice/opengl_enc.c
libavdevice/opengl_enc_shaders.h

index 9fdaa43..287d3ce 100644 (file)
@@ -265,6 +265,8 @@ static const struct OpenGLFormatDesc {
     { AV_PIX_FMT_GBRP16,     &FF_OPENGL_FRAGMENT_SHADER_RGB_PLANAR,  FF_GL_RED_COMPONENT, GL_UNSIGNED_SHORT },
     { AV_PIX_FMT_GBRAP,      &FF_OPENGL_FRAGMENT_SHADER_RGBA_PLANAR, FF_GL_RED_COMPONENT, GL_UNSIGNED_BYTE },
     { AV_PIX_FMT_GBRAP16,    &FF_OPENGL_FRAGMENT_SHADER_RGBA_PLANAR, FF_GL_RED_COMPONENT, GL_UNSIGNED_SHORT },
+    { AV_PIX_FMT_GRAY8,      &FF_OPENGL_FRAGMENT_SHADER_GRAY,        FF_GL_RED_COMPONENT, GL_UNSIGNED_BYTE },
+    { AV_PIX_FMT_GRAY16,     &FF_OPENGL_FRAGMENT_SHADER_GRAY,        FF_GL_RED_COMPONENT, GL_UNSIGNED_SHORT },
     { AV_PIX_FMT_NONE,       NULL }
 };
 
index 66104e0..6378dfb 100644 (file)
@@ -173,4 +173,16 @@ static const char * const FF_OPENGL_FRAGMENT_SHADER_YUVA_PLANAR =
                                        "1.5958, -0.81290, 0.0) * yuv, texture2D(u_texture3, texture_coordinate).r), 0.0, 1.0);"
     "}";
 
+static const char * const FF_OPENGL_FRAGMENT_SHADER_GRAY =
+#if defined(GL_ES_VERSION_2_0)
+    "precision mediump float;"
+#endif
+    "uniform sampler2D u_texture0;"
+    "varying vec2 texture_coordinate;"
+    "void main()"
+    "{"
+        "float c = texture2D(u_texture0, texture_coordinate);"
+        "gl_FragColor = vec4(c, c, c, 1.0);"
+    "}";
+
 #endif /* AVDEVICE_OPENGL_SHADERS_H */