summaryrefslogtreecommitdiff
path: root/aiq/aiq_results.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'aiq/aiq_results.cpp')
-rw-r--r--aiq/aiq_results.cpp91
1 files changed, 37 insertions, 54 deletions
diff --git a/aiq/aiq_results.cpp b/aiq/aiq_results.cpp
index 9dda17c..f727f36 100644
--- a/aiq/aiq_results.cpp
+++ b/aiq/aiq_results.cpp
@@ -14,9 +14,6 @@
#include <libcamera/base/log.h>
-/* Macros used by imported code */
-#define STDCOPY(dst, src, size) std::copy((src), ((src) + (size)), (dst))
-
namespace libcamera {
LOG_DEFINE_CATEGORY(AIQResults)
@@ -111,17 +108,14 @@ void AiqResults::setAe(ia_aiq_ae_results *ae)
ae->weight_grid->height;
gridElements = std::clamp<unsigned int>(gridElements, 1, MAX_AE_GRID_SIZE);
- STDCOPY(ae_.weight_grid->weights,
- ae->weight_grid->weights,
- gridElements * sizeof(char));
+ std::copy_n(ae->weight_grid->weights, gridElements, ae_.weight_grid->weights);
} else {
LOG(AIQResults, Error) << "Not copying AE Weight Grids";
}
// Copy the flash info structure
if (ae_.flashes && ae->flashes) {
- STDCOPY((int8_t *)ae_.flashes, (int8_t *)ae->flashes,
- NUM_FLASH_LEDS * sizeof(ia_aiq_flash_parameters));
+ std::copy_n(ae->flashes, NUM_FLASH_LEDS, ae_.flashes);
} else {
LOG(AIQResults, Error) << "Not copying AE Flashes";
}
@@ -172,20 +166,16 @@ void AiqResults::setGbce(ia_aiq_gbce_results *gbce)
gbce_.gamma_lut_size = gbce->gamma_lut_size;
- STDCOPY((int8_t *)gbce_.r_gamma_lut, (int8_t *)gbce->r_gamma_lut,
- gbce->gamma_lut_size * sizeof(float));
- STDCOPY((int8_t *)gbce_.b_gamma_lut, (int8_t *)gbce->b_gamma_lut,
- gbce->gamma_lut_size * sizeof(float));
- STDCOPY((int8_t *)gbce_.g_gamma_lut, (int8_t *)gbce->g_gamma_lut,
- gbce->gamma_lut_size * sizeof(float));
+ std::copy_n(gbce->r_gamma_lut, gbce->gamma_lut_size, gbce_.r_gamma_lut);
+ std::copy_n(gbce->b_gamma_lut, gbce->gamma_lut_size, gbce_.b_gamma_lut);
+ std::copy_n(gbce->g_gamma_lut, gbce->gamma_lut_size, gbce_.g_gamma_lut);
} else {
LOG(AIQResults, Error) << "Not copying Gamma LUT channels";
}
if (gbce->tone_map_lut_size > 0) {
gbce_.tone_map_lut_size = gbce->tone_map_lut_size;
- STDCOPY((int8_t *)gbce_.tone_map_lut, (int8_t *)gbce->tone_map_lut,
- gbce->tone_map_lut_size * sizeof(float));
+ std::copy_n(gbce->tone_map_lut, gbce->tone_map_lut_size, gbce_.tone_map_lut);
} else {
LOG(AIQResults, Error) << "Not copying Tone Mapping Gain LUT";
}
@@ -200,20 +190,20 @@ void AiqResults::setPa(ia_aiq_pa_results *pa)
{
ASSERT(pa);
- STDCOPY(&pa_.color_conversion_matrix[0][0], &pa->color_conversion_matrix[0][0],
- MAX_COLOR_CONVERSION_MATRIX * MAX_COLOR_CONVERSION_MATRIX *
- sizeof(pa->color_conversion_matrix[0][0]));
+ std::copy_n(&pa->color_conversion_matrix[0][0],
+ MAX_COLOR_CONVERSION_MATRIX * MAX_COLOR_CONVERSION_MATRIX,
+ &pa_.color_conversion_matrix[0][0]);
if (pa_.preferred_acm && pa->preferred_acm) {
pa_.preferred_acm->sector_count = pa->preferred_acm->sector_count;
- STDCOPY(pa_.preferred_acm->hue_of_sectors,
- pa->preferred_acm->hue_of_sectors,
- sizeof(*pa->preferred_acm->hue_of_sectors) * pa->preferred_acm->sector_count);
+ std::copy_n(pa->preferred_acm->hue_of_sectors,
+ pa->preferred_acm->sector_count,
+ pa_.preferred_acm->hue_of_sectors);
- STDCOPY(pa_.preferred_acm->advanced_color_conversion_matrices[0][0],
- pa->preferred_acm->advanced_color_conversion_matrices[0][0],
- sizeof(*pa->preferred_acm->advanced_color_conversion_matrices) * pa->preferred_acm->sector_count);
+ std::copy_n(pa->preferred_acm->advanced_color_conversion_matrices[0][0],
+ pa->preferred_acm->sector_count,
+ pa_.preferred_acm->advanced_color_conversion_matrices[0][0]);
} else {
LOG(AIQResults, Error) << "Not copying PA hue of sectors";
}
@@ -222,17 +212,17 @@ void AiqResults::setPa(ia_aiq_pa_results *pa)
pa_.ir_weight->height = pa->ir_weight->height;
pa_.ir_weight->width = pa->ir_weight->width;
- STDCOPY(pa_.ir_weight->ir_weight_grid_R,
- pa->ir_weight->ir_weight_grid_R,
- sizeof(*pa->ir_weight->ir_weight_grid_R) * pa->ir_weight->height * pa->ir_weight->width);
+ std::copy_n(pa->ir_weight->ir_weight_grid_R,
+ pa->ir_weight->height * pa->ir_weight->width,
+ pa_.ir_weight->ir_weight_grid_R);
- STDCOPY(pa_.ir_weight->ir_weight_grid_G,
- pa->ir_weight->ir_weight_grid_G,
- sizeof(*pa->ir_weight->ir_weight_grid_G) * pa->ir_weight->height * pa->ir_weight->width);
+ std::copy_n(pa->ir_weight->ir_weight_grid_G,
+ pa->ir_weight->height * pa->ir_weight->width,
+ pa_.ir_weight->ir_weight_grid_G);
- STDCOPY(pa_.ir_weight->ir_weight_grid_B,
- pa->ir_weight->ir_weight_grid_B,
- sizeof(*pa->ir_weight->ir_weight_grid_B) * pa->ir_weight->height * pa->ir_weight->width);
+ std::copy_n(pa->ir_weight->ir_weight_grid_B,
+ pa->ir_weight->height * pa->ir_weight->width,
+ pa_.ir_weight->ir_weight_grid_B);
} else {
LOG(AIQResults, Error) << "Not copying IR weight";
}
@@ -253,13 +243,13 @@ void AiqResults::setSa(ia_aiq_sa_results *sa)
sa_.height = sa->height;
sa_.lsc_update = sa->lsc_update;
+ uint32_t lscGridSize = sa_.width * sa_.height;
/* Check against one of the vectors but resize applicable to all. */
- if (channelGr_.size() < (sa_.width * sa_.height)) {
- int lscNewSize = sa_.width * sa_.height;
- channelGr_.resize(lscNewSize);
- channelGb_.resize(lscNewSize);
- channelR_.resize(lscNewSize);
- channelB_.resize(lscNewSize);
+ if (channelGr_.size() < lscGridSize) {
+ channelGr_.resize(lscGridSize);
+ channelGb_.resize(lscGridSize);
+ channelR_.resize(lscGridSize);
+ channelB_.resize(lscGridSize);
/* Update the SA data pointers to new memory locations. */
sa_.channel_gr = channelGr_.data();
@@ -269,23 +259,16 @@ void AiqResults::setSa(ia_aiq_sa_results *sa)
}
if (sa->lsc_update) {
- uint32_t memCopySize = sa->width * sa->height * sizeof(float);
-
- STDCOPY((int8_t *)sa_.channel_gr, (int8_t *)sa->channel_gb,
- memCopySize);
- STDCOPY((int8_t *)sa_.channel_gb, (int8_t *)sa->channel_gr,
- memCopySize);
- STDCOPY((int8_t *)sa_.channel_r, (int8_t *)sa->channel_r,
- memCopySize);
- STDCOPY((int8_t *)sa_.channel_b, (int8_t *)sa->channel_b,
- memCopySize);
+ std::copy_n(sa->channel_gr, lscGridSize, sa_.channel_gr);
+ std::copy_n(sa->channel_gb, lscGridSize, sa_.channel_gb);
+ std::copy_n(sa->channel_r, lscGridSize, sa_.channel_r);
+ std::copy_n(sa->channel_b, lscGridSize, sa_.channel_b);
} else {
- LOG(AIQResults, Error) << "Not copying LSC tables.";
+ LOG(AIQResults, Debug) << "Not copying LSC tables.";
}
- STDCOPY(&sa_.light_source[0],
- &sa->light_source[0],
- CMC_NUM_LIGHTSOURCES * sizeof(sa->light_source[0]));
+ std::copy_n(&sa->light_source[0], CMC_NUM_LIGHTSOURCES, &sa_.light_source[0]);
+
sa_.scene_difficulty = sa->scene_difficulty;
sa_.num_patches = sa->num_patches;
sa_.covered_area = sa->covered_area;