summaryrefslogtreecommitdiff
path: root/utils/raspberrypi/ctt/convert_tuning.py
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2024-02-23 14:12:14 +0200
committerJacopo Mondi <jacopo.mondi@ideasonboard.com>2025-01-08 14:30:25 +0100
commita09c7f212c1d8c73c60beb362dd42c2ca1c34060 (patch)
tree873cc511961f423dfa1b2bee17febf9c33c16c22 /utils/raspberrypi/ctt/convert_tuning.py
parent99b54c2c55a899769652a67d532850adecc67d8d (diff)
libcamera: Add CameraSensor implementation for raw V4L2 sensors
Add a new CameraSensorRaw implementation of the CameraSensor interface tailored to devices that implement the new V4L2 raw camera sensors API. This new class duplicates code from the CameraSensorLegacy class. The two classes will be refactored to share code. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'utils/raspberrypi/ctt/convert_tuning.py')
0 files changed, 0 insertions, 0 deletions
5' href='#n65'>65 66 67 68 69 70 71 72 73 74 75 76 77
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (C) 2019, Google Inc.
 *
 * libcamera V4L2 Subdevice format handling test
 */

#include <iostream>
#include <limits.h>

#include "v4l2_subdevice.h"
#include "v4l2_subdevice_test.h"

using namespace std;
using namespace libcamera;

/* Test format handling on the "Scaler" subdevice of vimc media device.  */

class FormatHandlingTest : public V4L2SubdeviceTest
{
protected:
	int run() override;
};

int FormatHandlingTest::run()
{
	V4L2SubdeviceFormat format = {};

	/*
	 * Get format on a non-existing Scaler pad: expect failure.
	 */
	int ret = scaler_->getFormat(2, &format);
	if (!ret) {
		cerr << "Getting format on a non existing pad should fail" << endl;
		return TestFail;
	}

	ret = scaler_->getFormat(0, &format);
	if (ret) {
		cerr << "Failed to get format" << endl;
		return TestFail;
	}

	/*
	 * Set unrealistic image resolutions and make sure it gets updated.
	 */
	format.size = { UINT_MAX, UINT_MAX };
	ret = scaler_->setFormat(0, &format);
	if (ret) {
		cerr << "Failed to set format: image resolution is wrong, but "
		     << "setFormat() should not fail." << endl;
		return TestFail;
	}

	if (format.size.width == UINT_MAX ||
	    format.size.height == UINT_MAX) {
		cerr << "Failed to update image format" << endl;
		return TestFail;
	}

	format.size = { 0, 0 };
	ret = scaler_->setFormat(0, &format);
	if (ret) {
		cerr << "Failed to set format: image resolution is wrong, but "
		     << "setFormat() should not fail." << endl;
		return TestFail;
	}

	if (format.size.width == 0 || format.size.height == 0) {
		cerr << "Failed to update image format" << endl;
		return TestFail;
	}

	return TestPass;
}

TEST_REGISTER(FormatHandlingTest);