Files
prosperon/tests/camera_colorspace.ce
2026-01-21 09:05:02 -06:00

72 lines
2.1 KiB
Plaintext

// Test camera colorspace functionality
var camera = use('camera');
var json = use('json');
// Get list of cameras
var cameras = camera.list();
if (length(cameras) == 0) {
log.console("No cameras found!");
$stop();
}
var cam_id = cameras[0];
log.console("Testing camera:", camera.name(cam_id));
// Get supported formats
var formats = camera.supported_formats(cam_id);
log.console("\nLooking for different colorspaces in supported formats...");
// Group formats by colorspace
var colorspaces = {};
for (var i = 0; i < length(formats); i++) {
var fmt = formats[i];
if (!colorspaces[fmt.colorspace]) {
colorspaces[fmt.colorspace] = [];
}
push(colorspaces[fmt.colorspace], fmt);
}
log.console("\nFound colorspaces:");
arrfor(array(colorspaces), function(key) {
log.console(" " + key + ": " + length(colorspaces[key]) + " formats");
})
// Try opening camera with different colorspaces
log.console("\nTrying to open camera with different colorspaces...");
arrfor(array(colorspaces), function(cs) {
// Get first format for this colorspace
var format = colorspaces[cs][0];
log.console("\nTrying colorspace '" + cs + "' with format:");
log.console(" Resolution: " + format.width + "x" + format.height);
log.console(" Pixel format: " + format.format);
// You can also create a custom format with a specific colorspace
var custom_format = {
format: format.format,
colorspace: cs, // This will be converted from string
width: format.width,
height: format.height,
framerate_numerator: format.framerate_numerator,
framerate_denominator: format.framerate_denominator
};
var cam = camera.open(cam_id, custom_format);
if (cam) {
var actual = cam.get_format();
log.console(" Opened successfully!");
log.console(" Actual colorspace: " + actual.colorspace);
// Camera will be closed when object is freed
cam = null;
} else {
log.console(" Failed to open with this colorspace");
}
// Just test first 3 colorspaces
if (find(array(colorspaces), cs) >= 2) return false
}, null, false)
log.console("\nColorspace test complete!");
$stop();