Add support for defining the transfer curve per mode
This commit is contained in:
@@ -13,11 +13,11 @@ Rear: {
|
|||||||
Rate: 15;
|
Rate: 15;
|
||||||
Format: "GRBG8";
|
Format: "GRBG8";
|
||||||
Rotate: 270;
|
Rotate: 270;
|
||||||
|
Transfer: "srgb";
|
||||||
|
|
||||||
# All the links on this platform are immutable
|
# All the links on this platform are immutable
|
||||||
Pipeline: (
|
Pipeline: (
|
||||||
{Type: "Mode", Entity: "s5k3l6xx"},
|
{Type: "Mode", Entity: "s5k3l6xx"},
|
||||||
{Type: "Rate", Entity: "s5k3l6xx"},
|
|
||||||
{Type: "Mode", Entity: "imx8mq-mipi-csi2"},
|
{Type: "Mode", Entity: "imx8mq-mipi-csi2"},
|
||||||
{Type: "Mode", Entity: "csi"},
|
{Type: "Mode", Entity: "csi"},
|
||||||
);
|
);
|
||||||
@@ -28,9 +28,10 @@ Rear: {
|
|||||||
Rate: 30;
|
Rate: 30;
|
||||||
Format: "GRBG8";
|
Format: "GRBG8";
|
||||||
Rotate: 270;
|
Rotate: 270;
|
||||||
|
Transfer: "srgb";
|
||||||
|
|
||||||
Pipeline: (
|
Pipeline: (
|
||||||
{Type: "Mode", Entity: "s5k3l6xx"},
|
{Type: "Mode", Entity: "s5k3l6xx"},
|
||||||
{Type: "Rate", Entity: "s5k3l6xx"},
|
|
||||||
{Type: "Mode", Entity: "imx8mq-mipi-csi2"},
|
{Type: "Mode", Entity: "imx8mq-mipi-csi2"},
|
||||||
{Type: "Mode", Entity: "csi"},
|
{Type: "Mode", Entity: "csi"},
|
||||||
);
|
);
|
||||||
|
@@ -21,6 +21,9 @@ libmegapixels_find_config(char *configfile);
|
|||||||
#define LIBMEGAPIXELS_CFA_GRBG 3
|
#define LIBMEGAPIXELS_CFA_GRBG 3
|
||||||
#define LIBMEGAPIXELS_CFA_RGGB 4
|
#define LIBMEGAPIXELS_CFA_RGGB 4
|
||||||
|
|
||||||
|
#define LIBMEGAPIXELS_XFER_RAW 0;
|
||||||
|
#define LIBMEGAPIXELS_XFER_SRGB 8;
|
||||||
|
|
||||||
struct _lmp_cmd {
|
struct _lmp_cmd {
|
||||||
int type;
|
int type;
|
||||||
const char *entity_from;
|
const char *entity_from;
|
||||||
@@ -48,6 +51,7 @@ struct _lmp_mode {
|
|||||||
int format;
|
int format;
|
||||||
int rotation;
|
int rotation;
|
||||||
int mirrored;
|
int mirrored;
|
||||||
|
int xfer;
|
||||||
double focal_length;
|
double focal_length;
|
||||||
double f_number;
|
double f_number;
|
||||||
|
|
||||||
|
11
src/parse.c
11
src/parse.c
@@ -249,6 +249,17 @@ load_camera(libmegapixels_devconfig *config, config_t *cfg, const char *name)
|
|||||||
mm->v4l_pixfmt = libmegapixels_format_to_v4l_pixfmt(mm->format);
|
mm->v4l_pixfmt = libmegapixels_format_to_v4l_pixfmt(mm->format);
|
||||||
mm->media_busfmt = libmegapixels_format_to_media_busfmt(mm->format);
|
mm->media_busfmt = libmegapixels_format_to_media_busfmt(mm->format);
|
||||||
|
|
||||||
|
const char *xfer;
|
||||||
|
if (config_setting_lookup_string(mode, "Transfer", &xfer)) {
|
||||||
|
if (strcmp(xfer, "srgb") == 0) {
|
||||||
|
mm->xfer = LIBMEGAPIXELS_XFER_SRGB;
|
||||||
|
} else {
|
||||||
|
mm->xfer = LIBMEGAPIXELS_XFER_RAW;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
mm->xfer = LIBMEGAPIXELS_XFER_RAW;
|
||||||
|
}
|
||||||
|
|
||||||
if (!config_setting_lookup_int(mode, "Rotate", &mm->rotation)) {
|
if (!config_setting_lookup_int(mode, "Rotate", &mm->rotation)) {
|
||||||
mm->rotation = 0;
|
mm->rotation = 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user