]> git.sesse.net Git - movit/blobdiff - footer.frag
Release Movit 1.3.2. (From a branch, since I do not want to break ABI compatibility...
[movit] / footer.frag
index c140b46f6cf0e920dc6fb2d35686b4e861bfaa83..4976136abf07491c6e586fa6a9380d5878248f48 100644 (file)
@@ -1,14 +1,55 @@
+// GLSL is pickier than the C++ preprocessor in if-testing for undefined
+// tokens; do some fixups here to keep it happy.
+
+#ifndef YCBCR_OUTPUT_PLANAR
+#define YCBCR_OUTPUT_PLANAR 0
+#endif
+
+#ifndef YCBCR_OUTPUT_SPLIT_Y_AND_CBCR
+#define YCBCR_OUTPUT_SPLIT_Y_AND_CBCR 0
+#endif
+
+#ifndef YCBCR_ALSO_OUTPUT_RGBA
+#define YCBCR_ALSO_OUTPUT_RGBA 0
+#endif
+
+#if YCBCR_OUTPUT_PLANAR
+out vec4 Y;
+out vec4 Cb;
+out vec4 Cr;
+#elif YCBCR_OUTPUT_SPLIT_Y_AND_CBCR
+out vec4 Y;
+out vec4 Chroma;
+#else
+out vec4 FragColor;
+#endif
+
+#if YCBCR_ALSO_OUTPUT_RGBA
+out vec4 RGBA;
+#endif
+
 void main()
 {
 void main()
 {
-       vec4 color = INPUT(tc);
+#if YCBCR_ALSO_OUTPUT_RGBA
+       vec4 color[2] = INPUT(tc);
+       vec4 color0 = color[0];
+       vec4 color1 = color[1];
+#else
+       vec4 color0 = INPUT(tc);
+#endif
+
 #if YCBCR_OUTPUT_PLANAR
 #if YCBCR_OUTPUT_PLANAR
-       gl_FragData[0] = color.rrra;
-       gl_FragData[1] = color.ggga;
-       gl_FragData[2] = color.bbba;
+       Y = color0.rrra;
+       Cb = color0.ggga;
+       Cr = color0.bbba;
 #elif YCBCR_OUTPUT_SPLIT_Y_AND_CBCR
 #elif YCBCR_OUTPUT_SPLIT_Y_AND_CBCR
-       gl_FragData[0] = color.rrra;
-       gl_FragData[1] = color.gbba;
+       Y = color0.rrra;
+       Chroma = color0.gbba;
 #else
 #else
-       gl_FragColor = color;
+       FragColor = color0;
+#endif
+
+#if YCBCR_ALSO_OUTPUT_RGBA
+       RGBA = color1;
 #endif
 }
 #endif
 }