gles2_debayer.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "camera.h"
  2. #include "dcp.h"
  3. #include "gl_util.h"
  4. #include <assert.h>
  5. #include <stdio.h>
  6. #define SHADER_DEBAYER 1
  7. #define SHADER_YUV 2
  8. typedef struct {
  9. int format;
  10. int shader;
  11. float forward_matrix[9];
  12. GLuint frame_buffer;
  13. GLuint program;
  14. GLint uniform_transform;
  15. GLint uniform_pixel_size;
  16. GLint uniform_padding_ratio;
  17. GLint uniform_texture;
  18. GLint uniform_color_matrix;
  19. GLint uniform_row_length;
  20. GLint uniform_inv_gamma;
  21. GLint uniform_blacklevel;
  22. GLuint quad;
  23. } GLES2Debayer;
  24. GLES2Debayer *gles2_debayer_new(int format);
  25. void gles2_debayer_free(GLES2Debayer *self);
  26. void gles2_debayer_use(GLES2Debayer *self);
  27. void gles2_debayer_configure(GLES2Debayer *self,
  28. uint32_t dst_width,
  29. uint32_t dst_height,
  30. uint32_t src_width,
  31. uint32_t src_height,
  32. uint32_t rotation,
  33. bool mirrored,
  34. struct MPCameraCalibration calibration);
  35. void gles2_debayer_set_shading(GLES2Debayer *self,
  36. float red,
  37. float blue,
  38. float blacklevel);
  39. void gles2_debayer_process(GLES2Debayer *self, GLuint dst_id, GLuint source_id);