From 541dd2f9c38b677a790dcb7ad2af5144565cede8 Mon Sep 17 00:00:00 2001 From: Martijn Braam Date: Tue, 24 Dec 2024 22:38:56 +0100 Subject: [PATCH] Add the other three YUV formats to the shader --- data/yuv.frag | 12 +++++++++++- src/gles2_debayer.c | 8 ++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/data/yuv.frag b/data/yuv.frag index 7322e8d..7eb4fdd 100644 --- a/data/yuv.frag +++ b/data/yuv.frag @@ -13,7 +13,17 @@ void main() { // 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 u = samples.y-0.5; float v = samples.w-0.5; diff --git a/src/gles2_debayer.c b/src/gles2_debayer.c index 9353989..3c75af4 100644 --- a/src/gles2_debayer.c +++ b/src/gles2_debayer.c @@ -44,6 +44,9 @@ gles2_debayer_new(int format) texture_mode = TEXTURE_BAYER; break; case V4L2_PIX_FMT_YUYV: + case V4L2_PIX_FMT_YVYU: + case V4L2_PIX_FMT_UYVY: + case V4L2_PIX_FMT_VYUY: shader = SHADER_YUV; texture_mode = TEXTURE_YUV; break; @@ -60,9 +63,10 @@ gles2_debayer_new(int format) char format_def[64]; snprintf(format_def, 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_bits_per_pixel(format)); + libmegapixels_format_bits_per_pixel(format), + libmegapixels_format_name(format)); const GLchar *def[1] = { format_def };