Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified config/linux/ipu75xa/gcss/IMX471_BBG803N3.IPU75XA.bin
Binary file not shown.
22 changes: 0 additions & 22 deletions config/linux/ipu75xa/libcamhal_configs.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,33 +21,11 @@
// The value format of availableSensors is "sensor name"-wf/uf-"CSI port ID".
// wf is word facing, and uf is user facing.
"availableSensors": [
"ov8856-wf-0",
"ov13b10-wf-0",
"ov13b10-uf-2",
"ov08x40-uf-0",
"ov08x40-uf-2",
"imx471-uf-0",
"ov05c10-uf-0",
"lt6911gxd-1-0",
"lt6911gxd-2-2",
"isx031-1-0",
"isx031-2-0",
"isx031-3-0",
"isx031-4-0",
"isx031-5-2",
"isx031-6-2",
"isx031-7-2",
"isx031-8-2",
"ar0233-1-0",
"ar0820-1-0",
"isx031-5-0",
"isx031-6-0",
"isx031-7-0",
"isx031-8-0",
"ar0830-a-0",
"ar0830-b-2",
"isx031-a-0",
"isx031-b-2"
],
"videoStreamNum" : 2
}
Expand Down
Binary file modified config/linux/ipu8/gcss/OV08X40_KAFE799.IPU8.bin
Binary file not shown.
14 changes: 2 additions & 12 deletions config/linux/ipu8/libcamhal_configs.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// Copyright (C) 2025-2026 Intel Corporation
// Copyright (C) 2025 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand All @@ -23,17 +23,7 @@
"availableSensors": [
"ov13b10-wf-0",
"ov13b10-uf-2",
"lt6911gxd-1-0",
"lt6911gxd-2-2",
"isx031-1-0",
"isx031-2-0",
"isx031-3-0",
"isx031-4-0",
"isx031-5-2",
"isx031-6-2",
"isx031-7-2",
"isx031-8-2"

"ov08x40-uf-0"
],
"videoStreamNum" : 2
}
Expand Down
4 changes: 2 additions & 2 deletions config/linux/ipu8/sensors/ov13b10-uf.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@
},
{
"srcName": "Intel IPU7 CSI2 $CSI_PORT", "srcPad": 1,
"sinkName": "Intel IPU7 ISYS Capture 16", "sinkPad": 0, "enable": true
"sinkName": "Intel IPU7 ISYS Capture $CAP_N", "sinkPad": 0, "enable": true
}
],
"videonode": [
{
"name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC"
"name": "Intel IPU7 ISYS Capture $CAP_N", "videoNodeType": "VIDEO_GENERIC"
},
{
"name": "Intel IPU7 CSI2 $CSI_PORT", "videoNodeType": "VIDEO_ISYS_RECEIVER"
Expand Down
4 changes: 2 additions & 2 deletions config/linux/ipu8/sensors/ov13b10-wf.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@
},
{
"srcName": "Intel IPU7 CSI2 $CSI_PORT", "srcPad": 1,
"sinkName": "Intel IPU7 ISYS Capture 0", "sinkPad": 0, "enable": true
"sinkName": "Intel IPU7 ISYS Capture $CAP_N", "sinkPad": 0, "enable": true
}
],
"videonode": [
{
"name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC"
"name": "Intel IPU7 ISYS Capture $CAP_N", "videoNodeType": "VIDEO_GENERIC"
},
{
"name": "Intel IPU7 CSI2 $CSI_PORT", "videoNodeType": "VIDEO_ISYS_RECEIVER"
Expand Down
4 changes: 4 additions & 0 deletions include/utils/ScopedAtrace.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ class ScopedAtrace {
long value = -1, const char* note2 = NULL, int value2 = -1,
const char* note3 = NULL, int value3 = -1);
~ScopedAtrace();

ScopedAtrace(const ScopedAtrace&) = delete;
ScopedAtrace& operator=(const ScopedAtrace&) = delete;

static void setTraceLevel(uint32_t);

private:
Expand Down
3 changes: 3 additions & 0 deletions modules/algowrapper/IntelCca.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ class IntelCca {
IntelCca(int cameraId, TuningMode mode);
virtual ~IntelCca();

IntelCca(const IntelCca&) = delete;
IntelCca& operator=(const IntelCca&) = delete;

static IntelCca* getInstance(int cameraId, TuningMode mode);
static void releaseInstance(int cameraId, TuningMode mode);

Expand Down
7 changes: 0 additions & 7 deletions modules/ipu_desc/ipu75xa/FragmentsConfigurator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,13 +205,6 @@ StaticGraphStatus Gen2FragmentsConfigurator::configFragmentsDownscaler(StaticGra

for (int32_t stripe = leftNonVanishedStripe; stripe <= rightNonVanishedStripe; stripe++)
{
if (scaleFactor == 1.0)
{
kernelFragments[stripe].fragmentOutputWidth = kernelFragments[stripe].fragmentInputWidth;
_outputStartX[runKernel->kernel_uuid][stripe] = kernelFragments[stripe].fragmentStartX;
continue;
}

int rightCrop = stripe == static_cast<int32_t>(_numberOfFragments - 1) ? resInfo->input_crop.right : 0;

double value = (static_cast<double>(kernelFragments[stripe].fragmentInputWidth - rightCrop) * scaleFactor) / 4;
Expand Down
2 changes: 1 addition & 1 deletion modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -720,7 +720,7 @@ StaticGraphStatus GraphResolutionConfigurator::updateRunKernelUpScaler(StaticGra
upscalerActualInputWidth = GRA_ROUND_DOWN(upscalerActualInputWidth, stepW);
upscalerActualInputHeight = (upscalerActualInputWidth / stepW) * stepH;

if ((static_cast<double>(upscalerActualOutputWidth) / upscalerActualInputWidth) > max_upscaling)
if ((upscalerActualOutputWidth / upscalerActualInputWidth) > max_upscaling)
{
// Perform the max possible up scaling, downscaler will adjust itself
upscalerActualInputWidth = upscalerActualOutputWidth / max_upscaling;
Expand Down
7 changes: 0 additions & 7 deletions modules/ipu_desc/ipu7x/FragmentsConfigurator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,13 +205,6 @@ StaticGraphStatus Gen2FragmentsConfigurator::configFragmentsDownscaler(StaticGra

for (int32_t stripe = leftNonVanishedStripe; stripe <= rightNonVanishedStripe; stripe++)
{
if (scaleFactor == 1.0)
{
kernelFragments[stripe].fragmentOutputWidth = kernelFragments[stripe].fragmentInputWidth;
_outputStartX[runKernel->kernel_uuid][stripe] = kernelFragments[stripe].fragmentStartX;
continue;
}

int rightCrop = stripe == static_cast<int32_t>(_numberOfFragments - 1) ? resInfo->input_crop.right : 0;

double value = (static_cast<double>(kernelFragments[stripe].fragmentInputWidth - rightCrop) * scaleFactor) / 4;
Expand Down
2 changes: 1 addition & 1 deletion modules/ipu_desc/ipu7x/GraphResolutionConfigurator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -720,7 +720,7 @@ StaticGraphStatus GraphResolutionConfigurator::updateRunKernelUpScaler(StaticGra
upscalerActualInputWidth = GRA_ROUND_DOWN(upscalerActualInputWidth, stepW);
upscalerActualInputHeight = (upscalerActualInputWidth / stepW) * stepH;

if ((static_cast<double>(upscalerActualOutputWidth) / upscalerActualInputWidth) > max_upscaling)
if ((upscalerActualOutputWidth / upscalerActualInputWidth) > max_upscaling)
{
// Perform the max possible up scaling, downscaler will adjust itself
upscalerActualInputWidth = upscalerActualOutputWidth / max_upscaling;
Expand Down
7 changes: 0 additions & 7 deletions modules/ipu_desc/ipu8/FragmentsConfigurator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,13 +205,6 @@ StaticGraphStatus Gen2FragmentsConfigurator::configFragmentsDownscaler(StaticGra

for (int32_t stripe = leftNonVanishedStripe; stripe <= rightNonVanishedStripe; stripe++)
{
if (scaleFactor == 1.0)
{
kernelFragments[stripe].fragmentOutputWidth = kernelFragments[stripe].fragmentInputWidth;
_outputStartX[runKernel->kernel_uuid][stripe] = kernelFragments[stripe].fragmentStartX;
continue;
}

int rightCrop = stripe == static_cast<int32_t>(_numberOfFragments - 1) ? resInfo->input_crop.right : 0;

double value = (static_cast<double>(kernelFragments[stripe].fragmentInputWidth - rightCrop) * scaleFactor) / 4;
Expand Down
2 changes: 1 addition & 1 deletion modules/ipu_desc/ipu8/GraphResolutionConfigurator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -720,7 +720,7 @@ StaticGraphStatus GraphResolutionConfigurator::updateRunKernelUpScaler(StaticGra
upscalerActualInputWidth = GRA_ROUND_DOWN(upscalerActualInputWidth, stepW);
upscalerActualInputHeight = (upscalerActualInputWidth / stepW) * stepH;

if ((static_cast<double>(upscalerActualOutputWidth) / upscalerActualInputWidth) > max_upscaling)
if ((upscalerActualOutputWidth / upscalerActualInputWidth) > max_upscaling)
{
// Perform the max possible up scaling, downscaler will adjust itself
upscalerActualInputWidth = upscalerActualOutputWidth / max_upscaling;
Expand Down
5 changes: 5 additions & 0 deletions modules/v4l2/v4l2_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class V4L2Buffer {
public:
V4L2Buffer();
explicit V4L2Buffer(const V4L2Buffer& buf);
~V4L2Buffer() = default;
uint32_t Index() const { return v4l2_buf_.index; }
void SetIndex(uint32_t index) { v4l2_buf_.index = index; }
uint32_t Type() const { return v4l2_buf_.type; }
Expand Down Expand Up @@ -141,6 +142,10 @@ class V4L2Device {

virtual ~V4L2Device();

// Explicitly delete copy and move operations (manages file descriptor)
V4L2Device(const V4L2Device&) = delete;
V4L2Device& operator=(const V4L2Device&) = delete;

// This method opens the V4L2 device.
//
// Args:
Expand Down
2 changes: 1 addition & 1 deletion src/3a/AiqCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ int AiqCore::reFormatLensShadingMap(const LSCGrid& inputLscGrid, float* dstLscGr
// Metadata spec request order [R, Geven, Godd, B]
// the lensShading from ISP is 4 width * height block,
// for ia_aiq_bayer_order_grbg, the four block is G, R, B, G
const size_t size = inputLscGrid.height * inputLscGrid.width;
const size_t size = static_cast<size_t>(inputLscGrid.height) * static_cast<size_t>(inputLscGrid.width);
for (size_t i = 0U; i < size; i++) {
*dstLscGridRGGB = inputLscGrid.gridR[i];
dstLscGridRGGB++;
Expand Down
3 changes: 0 additions & 3 deletions src/3a/AiqEngine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -295,9 +295,6 @@ AiqEngine::AiqState AiqEngine::prepareInputParam(AiqStatistics* aiqStats, AiqRes

// Update sensor info for the first-run of AIQ
if (mFirstAiqRunning) {
// CRL_MODULE_S
mSensorManager->setFrameRate(aiqParams.fps);
// CRL_MODULE_E
// set sensor info if needed
ia_aiq_exposure_sensor_descriptor sensorDescriptor = {};
ia_aiq_frame_params frameParams = {};
Expand Down
33 changes: 33 additions & 0 deletions src/3a/AiqResult.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,39 @@ AiqResult::~AiqResult() {
deinit();
}

AiqResult::AiqResult(const AiqResult& other) :
mCameraId(other.mCameraId),
mTimestamp(other.mTimestamp),
mSequence(other.mSequence),
mFrameId(other.mFrameId),
mTuningMode(other.mTuningMode),
mAfDistanceDiopters(other.mAfDistanceDiopters),
mSkip(other.mSkip),
mFocusRange(other.mFocusRange),
mLensPosition(other.mLensPosition),
mSceneMode(other.mSceneMode),
mAeResults(other.mAeResults),
mAwbResults(other.mAwbResults),
mAfResults(other.mAfResults),
mGbceResults(other.mGbceResults),
mPaResults(other.mPaResults),
mOutStats(other.mOutStats),
mFrameDuration(other.mFrameDuration),
mRollingShutter(other.mRollingShutter) {
CLEAR(mCustomControls);
CLEAR(mCustomControlsParams);

mOutStats.rgbs_grid[0].blocks_ptr = mOutStats.rgbs_blocks[0];

mCustomControls.count = other.mCustomControls.count;
mCustomControls.parameters = mCustomControlsParams;
for (int i = 0; i < mCustomControls.count; i++) {
mCustomControlsParams[i] = other.mCustomControlsParams[i];
}
MEMCPY_S(mLensShadingMap, sizeof(mLensShadingMap),
other.mLensShadingMap, sizeof(other.mLensShadingMap));
}

int AiqResult::init() {
CLEAR(mAeResults);
CLEAR(mAfResults);
Expand Down
1 change: 1 addition & 0 deletions src/3a/AiqResult.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class AiqResult {
public:
AiqResult(int cameraId);
~AiqResult();
AiqResult(const AiqResult& other);

int init();
int deinit() const;
Expand Down
2 changes: 2 additions & 0 deletions src/3a/AiqResultStorage.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@ class AiqResultStorage {

AiqResultStorage(int cameraId);
~AiqResultStorage();
AiqResultStorage(const AiqResultStorage&) = delete;
AiqResultStorage& operator=(const AiqResultStorage&) = delete;

private:
int mCameraId;
Expand Down
10 changes: 5 additions & 5 deletions src/3a/AiqUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -370,11 +370,11 @@ void AiqUtils::applyTonemapSRGB(cca::cca_gbce_params* results) {
CheckAndLogError(lutSize < MIN_TONEMAP_POINTS, VOID_VALUE,
"Bad gamma lut size (%d) in gbce results", lutSize);
for (int i = 0; i < lutSize; i++) {
if (i / (lutSize - 1) < 0.0031308) {
results->g_gamma_lut[i] = 12.92 * (i / (lutSize - 1));
if (i / (static_cast<float>(lutSize) - 1.0F) < 0.0031308) {
results->g_gamma_lut[i] = 12.92 * (i / (static_cast<float>(lutSize) - 1.0F));
} else {
results->g_gamma_lut[i] =
1.055 * pow(i / static_cast<float>(lutSize - 1), 1 / 2.4) - 0.055;
1.055 * pow(i / (static_cast<float>(lutSize) - 1.0F), 1 / 2.4) - 0.055;
}
}

Expand Down Expand Up @@ -498,9 +498,9 @@ void AiqUtils::applyAwbGainForTonemapCurve(const camera_tonemap_curves_t& curves
*/
float AiqUtils::calculateHyperfocalDistance(const cca::cca_cmc &cmc) {
const float DEFAULT_HYPERFOCAL_DISTANCE = 5000.0F;

// Pixel size is stored in CMC in hundreds of micrometers
const float pixelSizeMicro = cmc.optics.sensor_pix_size_h / 100;
const float pixelSizeMicro = static_cast<float>(cmc.optics.sensor_pix_size_h) / 100;

// focal length is stored in CMC in hundreds of millimeters
const float focalLengthMillis = static_cast<float>(cmc.optics.effect_focal_length) / 100;

Expand Down
2 changes: 1 addition & 1 deletion src/3a/MakerNote.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,8 @@ int MakerNote::saveMakernoteData(int cameraId, camera_makernote_mode_t makernote
}

void MakerNote::updateTimestamp(int64_t sequence, uint64_t timestamp) {
LOG2("@%s, mMknState:%d", __func__, mMknState);
AutoMutex lock(mMknLock);
LOG2("@%s, mMknState:%d", __func__, mMknState);
CheckAndLogError(mMknState != INIT, VOID_VALUE, "@%s, mkn isn't initialized", __func__);

for (auto rit = mMakernoteDataList.rbegin(); rit != mMakernoteDataList.rend(); ++rit) {
Expand Down
10 changes: 2 additions & 8 deletions src/3a/SensorManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ void SensorManager::handleSensorModeSwitch(int64_t sequence) {
if (mWdrModeSetting.sequence <= sequence) {
const int wdrMode = convertTuningModeToWdrMode(mWdrModeSetting.tuningMode);
LOG2("<seq%ld>@%s, tunning mode %d, set wdrMode %d sequence %ld", sequence, __func__,
wdrMode, mWdrModeSetting.sequence);
mWdrModeSetting.tuningMode, wdrMode, mWdrModeSetting.sequence);

if (mSensorHwCtrl->setWdrMode(wdrMode) == OK) {
mModeSwitched = false;
Expand Down Expand Up @@ -253,12 +253,6 @@ uint32_t SensorManager::updateSensorExposure(SensorExpGroup sensorExposures, int
effectSeq, applyingSeq);
return static_cast<uint32_t>(effectSeq);
}
// CRL_MODULE_S
int SensorManager::setFrameRate(float fps)
{
return mSensorHwCtrl->setFrameRate(fps);
}
// CRL_MODULE_E

int SensorManager::getSensorInfo(ia_aiq_frame_params &frameParams,
ia_aiq_exposure_sensor_descriptor &sensorDescriptor) {
Expand All @@ -276,7 +270,7 @@ int SensorManager::getSensorInfo(ia_aiq_frame_params &frameParams,
CheckAndLogError(res.empty(), BAD_VALUE, "Supported ISYS resolutions are not configured.");
// In none-ISYS cases, only take 30 fps into account.
const int fps = 30;
float freq = res[0].width * res[0].height * fps / 1000000;
float freq = (res[0].width * res[0].height * fps) / 1000000.0F;
sensorDescriptor = {freq, static_cast<unsigned short>(res[0].width),
static_cast<unsigned short>(res[0].height), 24, 0,
static_cast<unsigned short>(res[0].width), 6, 0,
Expand Down
3 changes: 0 additions & 3 deletions src/3a/SensorManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,6 @@ class SensorManager {

int setAWB(float r_per_g, float b_per_g);
// HDR_FEATURE_E
// CRL_MODULE_S
int setFrameRate(float fps);
// CRL_MODULE_E
int getCurrentExposureAppliedDelay();
uint64_t getSofTimestamp(int64_t sequence);
private:
Expand Down
2 changes: 1 addition & 1 deletion src/3a/intel3a/Intel3AParameter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ int Intel3AParameter::setSensorInfo(ia_aiq_exposure_sensor_descriptor descriptor
return OK;
}

int Intel3AParameter::updateParameter(aiq_parameter_t param) {
int Intel3AParameter::updateParameter(const aiq_parameter_t& param) {
updateAeParameter(param);
updateAwbParameter(param);
updateAfParameter(param);
Expand Down
2 changes: 1 addition & 1 deletion src/3a/intel3a/Intel3AParameter.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class Intel3AParameter {
void init();
int getCMCInfo(TuningMode tuningMode);
int setSensorInfo(ia_aiq_exposure_sensor_descriptor descriptor);
int updateParameter(aiq_parameter_t param);
int updateParameter(const aiq_parameter_t& param);
void updateAeResult(cca::cca_ae_results* aeResult) const ;
void updateAwbResult(cca::cca_awb_results* awbResult);
void updatePaResult(cca::cca_pa_params* paResult);
Expand Down
6 changes: 6 additions & 0 deletions src/core/CameraBuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,10 @@ class CameraBuffer {
DeviceRender();
explicit DeviceRender(const char* path_file);
~DeviceRender();

DeviceRender(const DeviceRender&) = delete;
DeviceRender& operator=(const DeviceRender&) = delete;

void* mapDmaBufferAddr(int fd, unsigned int bufferSize);

private:
Expand All @@ -185,6 +189,8 @@ class CameraBufferMapper {
public:
explicit CameraBufferMapper(std::shared_ptr<CameraBuffer> buffer);
~CameraBufferMapper();
CameraBufferMapper(const CameraBufferMapper&) = delete;
CameraBufferMapper& operator=(const CameraBufferMapper&) = delete;

void* addr();
int size();
Expand Down
Loading
Loading