Add the other three YUV formats to the shader

This commit is contained in:
Martijn Braam
2024-12-24 22:38:56 +01:00
parent f5248b388e
commit 541dd2f9c3
2 changed files with 17 additions and 3 deletions

View File

@@ -13,7 +13,17 @@ void
main() main()
{ {
// Sample format: Y,U,Y,V // Sample format: Y,U,Y,V
vec4 samples = texture2D(texture, texture_coord); vec4 raw = texture2D(texture, texture_coord);
#if defined(FMT_YUYV)
vec4 samples = raw.xyzw;
#elif defined(FMT_YVYU)
vec4 samples = raw.xwzy;
#elif defined(FMT_UYVY)
vec4 samples = raw.yzwx;
#elif defined(FMT_VYUY)
vec4 samples = raw.wzyx;
#endif
float y = samples.x; float y = samples.x;
float u = samples.y-0.5; float u = samples.y-0.5;
float v = samples.w-0.5; float v = samples.w-0.5;

View File

@@ -44,6 +44,9 @@ gles2_debayer_new(int format)
texture_mode = TEXTURE_BAYER; texture_mode = TEXTURE_BAYER;
break; break;
case V4L2_PIX_FMT_YUYV: case V4L2_PIX_FMT_YUYV:
case V4L2_PIX_FMT_YVYU:
case V4L2_PIX_FMT_UYVY:
case V4L2_PIX_FMT_VYUY:
shader = SHADER_YUV; shader = SHADER_YUV;
texture_mode = TEXTURE_YUV; texture_mode = TEXTURE_YUV;
break; break;
@@ -60,9 +63,10 @@ gles2_debayer_new(int format)
char format_def[64]; char format_def[64];
snprintf(format_def, snprintf(format_def,
64, 64,
"#define CFA_%s\n#define BITS_%d\n", "#define CFA_%s\n#define BITS_%d\n#define FMT_%s\n",
libmegapixels_format_cfa(format), libmegapixels_format_cfa(format),
libmegapixels_format_bits_per_pixel(format)); libmegapixels_format_bits_per_pixel(format),
libmegapixels_format_name(format));
const GLchar *def[1] = { format_def }; const GLchar *def[1] = { format_def };