Use xfer function from libmegapixels instead of v4l

This commit is contained in:
Martijn Braam
2023-07-22 16:41:38 +02:00
parent 128a3696c4
commit 9a685eb839
5 changed files with 4 additions and 11 deletions

View File

@@ -23,7 +23,7 @@ struct _GLES2Debayer {
}; };
GLES2Debayer * GLES2Debayer *
gles2_debayer_new(int format, uint32_t colorspace) gles2_debayer_new(int format, int xfer)
{ {
uint32_t pixfmt = libmegapixels_format_to_v4l_pixfmt(format); uint32_t pixfmt = libmegapixels_format_to_v4l_pixfmt(format);
if (pixfmt != V4L2_PIX_FMT_SBGGR8 && pixfmt != V4L2_PIX_FMT_SGBRG8 && if (pixfmt != V4L2_PIX_FMT_SBGGR8 && pixfmt != V4L2_PIX_FMT_SGBRG8 &&
@@ -38,7 +38,7 @@ gles2_debayer_new(int format, uint32_t colorspace)
check_gl(); check_gl();
char format_def[96]; char format_def[96];
bool is_srgb = colorspace == V4L2_COLORSPACE_SRGB; bool is_srgb = xfer == LIBMEGAPIXELS_XFER_SRGB;
snprintf(format_def, snprintf(format_def,
96, 96,
"#define CFA_%s\n#define BITS_%d\n#define COLORSPACE_%s\n", "#define CFA_%s\n#define BITS_%d\n#define COLORSPACE_%s\n",

View File

@@ -5,7 +5,7 @@
typedef struct _GLES2Debayer GLES2Debayer; typedef struct _GLES2Debayer GLES2Debayer;
GLES2Debayer *gles2_debayer_new(int format, uint32_t colorspace); GLES2Debayer *gles2_debayer_new(int format, int xfer);
void gles2_debayer_free(GLES2Debayer *self); void gles2_debayer_free(GLES2Debayer *self);
void gles2_debayer_use(GLES2Debayer *self); void gles2_debayer_use(GLES2Debayer *self);

View File

@@ -81,7 +81,6 @@ update_process_pipeline()
.preview_width = state_io.preview_width, .preview_width = state_io.preview_width,
.preview_height = state_io.preview_height, .preview_height = state_io.preview_height,
.device_rotation = state_io.device_rotation, .device_rotation = state_io.device_rotation,
.colorspace = state_io.colorspace,
.gain.control = state_io.gain.control, .gain.control = state_io.gain.control,
.gain.auto_control = state_io.gain.auto_control, .gain.auto_control = state_io.gain.auto_control,
@@ -145,7 +144,6 @@ capture(MPPipeline *pipeline, const void *data)
mp_camera_stop_capture(mpcamera); mp_camera_stop_capture(mpcamera);
struct v4l2_format format = { 0 }; struct v4l2_format format = { 0 };
libmegapixels_select_mode(state_io.camera, state_io.mode_capture, &format); libmegapixels_select_mode(state_io.camera, state_io.mode_capture, &format);
state_io.colorspace = format.fmt.pix.colorspace;
state_io.flush_pipeline = true; state_io.flush_pipeline = true;
mp_camera_start_capture(mpcamera); mp_camera_start_capture(mpcamera);
@@ -328,7 +326,6 @@ on_frame(MPBuffer buffer, void *_data)
struct v4l2_format format = { 0 }; struct v4l2_format format = { 0 };
libmegapixels_select_mode( libmegapixels_select_mode(
state_io.camera, state_io.mode_preview, &format); state_io.camera, state_io.mode_preview, &format);
state_io.colorspace = format.fmt.pix.colorspace;
state_io.flush_pipeline = true; state_io.flush_pipeline = true;
mp_camera_start_capture(mpcamera); mp_camera_start_capture(mpcamera);
@@ -501,7 +498,6 @@ update_state(MPPipeline *pipeline, const mp_state_io *new_state)
libmegapixels_select_mode(state_io.camera, libmegapixels_select_mode(state_io.camera,
state_io.mode_preview, state_io.mode_preview,
&format); &format);
state_io.colorspace = format.fmt.pix.colorspace;
} }
mp_camera_start_capture(mpcamera); mp_camera_start_capture(mpcamera);

View File

@@ -927,7 +927,7 @@ on_output_changed(bool format_changed)
if (gles2_debayer) if (gles2_debayer)
gles2_debayer_free(gles2_debayer); gles2_debayer_free(gles2_debayer);
gles2_debayer = gles2_debayer_new(state_proc.mode->format, state_proc.colorspace); gles2_debayer = gles2_debayer_new(state_proc.mode->format, state_proc.mode->xfer);
check_gl(); check_gl();
gles2_debayer_use(gles2_debayer); gles2_debayer_use(gles2_debayer);
@@ -990,7 +990,6 @@ update_state(MPPipeline *pipeline, const mp_state_proc *new_state)
} }
state_proc.mode = new_state->camera->current_mode; state_proc.mode = new_state->camera->current_mode;
state_proc.colorspace = new_state->colorspace;
state_proc.preview_width = new_state->preview_width; state_proc.preview_width = new_state->preview_width;
state_proc.preview_height = new_state->preview_height; state_proc.preview_height = new_state->preview_height;

View File

@@ -51,7 +51,6 @@ typedef struct state_io {
int captures_remaining; int captures_remaining;
bool flush_pipeline; bool flush_pipeline;
int blank_frame_count; int blank_frame_count;
uint32_t colorspace;
// Control state // Control state
controlstate gain; controlstate gain;
@@ -80,7 +79,6 @@ typedef struct state_proc {
int counter; int counter;
int preview_width; int preview_width;
int preview_height; int preview_height;
uint32_t colorspace;
// Device orientation in degrees // Device orientation in degrees
int device_rotation; int device_rotation;