Files
Megapixels/src/gles2_debayer.h
Martijn Braam 8fbea82b2b Rewrite YUV processing pipeline.
Use a 4-channel texture instead for packed YUV data so
every pixel in the texture has all the 4:2:2 color data
available.
2024-12-23 17:29:46 +01:00

58 lines
1.6 KiB
C

#include "camera.h"
#include "dcp.h"
#include "gl_util.h"
#include <assert.h>
#include <stdio.h>
#define SHADER_DEBAYER 1
#define SHADER_DEBAYER_PACKED 2
#define SHADER_YUV 3
#define TEXTURE_BAYER 1
#define TEXTURE_YUV 2
typedef struct {
int format;
int shader;
float forward_matrix[9];
int texture_mode;
GLuint frame_buffer;
GLuint program;
GLint uniform_transform;
GLint uniform_pixel_size;
GLint uniform_padding_ratio;
GLint uniform_texture;
GLint uniform_color_matrix;
GLint uniform_row_length;
GLint uniform_inv_gamma;
GLint uniform_blacklevel;
GLuint quad;
} GLES2Debayer;
GLES2Debayer *gles2_debayer_new(int format);
void gles2_debayer_free(GLES2Debayer *self);
void gles2_debayer_use(GLES2Debayer *self);
void gles2_debayer_configure(GLES2Debayer *self,
uint32_t dst_width,
uint32_t dst_height,
uint32_t src_width,
uint32_t src_height,
uint32_t rotation,
bool mirrored,
struct MPCameraCalibration calibration);
void gles2_debayer_set_shading(GLES2Debayer *self,
float red,
float blue,
float blacklevel);
void gles2_debayer_process(GLES2Debayer *self, GLuint dst_id, GLuint source_id);
const char* gles2_shader_to_fragment(int shader);
const char* gles2_shader_to_vertex(int shader);