mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-02-21 07:43:54 +08:00
* it's something * backup * 16:10 * cleanup * this is fine * close * remove some junk * no heck * disos * real 10 * for some reason this is flipped * 20hz * no return * ae * tear * need curve laster * correct real gains * fix time * cleanup * why the scam * disable for now * 0.7 * hdr * that doesnt work * what * hugeoof * clean up * cleanup * fix regs * welp cant * is this corrent * it is sq * remove * back * stg10bit * back2ten * Revert "remove" This reverts commit 18712ab7e103c12621c929cd0f772ecb9b348247. * 20hz and swb * correct height * 10bit * ui hack for now * slight * perfect * blk64 * ccm * fix page faults * template * set 4x * is this fine * try * this seems to work * Revert "this seems to work" This reverts commit d3c9023d3f14bd9394fed2d6276dba777ed0e606. * needs to be static * close * 64 is optimal * 2 * take * not 1 * offset * whats going on * i have no idea * less resistence * box defs * no * reduce blur artifacts * simplify * fix * fake short is too much for bright * can be subzero * should not use lsvc * no wasted bit * cont no slow * no less than 10bit * it is based * wrong * right * quart * shift * raise noise floor * 4.5/4.7 * same ballpark * int is fine * shane owes me m4a4 * Revert "shane owes me m4a4" This reverts commit b4283fee18efebedae628a6cfd926ff1416dcfe5. * back * Revert "4.5/4.7" This reverts commit e38f96e90cb5370bd378f6b66def9e7e3ed0ce5d. * default * oof * clean up * simpilfy * from sensorinfo * no div * better name * not the wrong one * not anymore relevant * too * not call it debayer * cl headers * arg is 2nd * gone is is_bggr * define * no is hdr * rgb_tmp * p1 * clean up * 4 * cant for * fix somewhre else * const * ap * rects * just set staruc * nnew tmp * pull it for now * 12 * common rect * Revert "not anymore relevant" This reverts commit 1d574673a16cc31b7a255609e07775c3579eef15. * Revert "too" This reverts commit c2d4dcc52a859fe799362f9fcc2ffda99b264e50. * Revert "Revert "too"" This reverts commit 0abbabe1fde51592f1619058638b4ac6a6dee4b3. * no tol is fine * rename * sensor id * unsgin * flag * some linalg * cast * should be h ref * cap --------- Co-authored-by: Comma Device <device@comma.ai>
85 lines
2.9 KiB
C++
85 lines
2.9 KiB
C++
#define CATCH_CONFIG_MAIN
|
|
#include "catch2/catch.hpp"
|
|
|
|
#include <cassert>
|
|
|
|
#include <cmath>
|
|
#include <cstring>
|
|
|
|
#include "common/util.h"
|
|
#include "system/camerad/cameras/camera_common.h"
|
|
|
|
#define W 240
|
|
#define H 160
|
|
|
|
|
|
#define TONE_SPLITS 3
|
|
|
|
float gts[TONE_SPLITS * TONE_SPLITS * TONE_SPLITS * TONE_SPLITS] = {
|
|
0.917969, 0.917969, 0.375000, 0.917969, 0.375000, 0.375000, 0.187500, 0.187500, 0.187500, 0.917969,
|
|
0.375000, 0.375000, 0.187500, 0.187500, 0.187500, 0.187500, 0.187500, 0.187500, 0.093750, 0.093750,
|
|
0.093750, 0.093750, 0.093750, 0.093750, 0.093750, 0.093750, 0.093750, 0.917969, 0.375000, 0.375000,
|
|
0.187500, 0.187500, 0.187500, 0.187500, 0.187500, 0.187500, 0.093750, 0.093750, 0.093750, 0.093750,
|
|
0.093750, 0.093750, 0.093750, 0.093750, 0.093750, 0.093750, 0.093750, 0.093750, 0.093750, 0.093750,
|
|
0.093750, 0.093750, 0.093750, 0.093750, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
|
|
0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
|
|
0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
|
|
0.000000};
|
|
|
|
|
|
TEST_CASE("camera.test_set_exposure_target") {
|
|
// set up fake camerabuf
|
|
CameraBuf cb = {};
|
|
VisionBuf vb = {};
|
|
uint8_t * fb_y = new uint8_t[W*H];
|
|
vb.y = fb_y;
|
|
cb.cur_yuv_buf = &vb;
|
|
cb.rgb_width = W;
|
|
cb.rgb_height = H;
|
|
Rect rect = {0, 0, W-1, H-1};
|
|
|
|
printf("AE test patterns %dx%d\n", cb.rgb_width, cb.rgb_height);
|
|
|
|
// mix of 5 tones
|
|
uint8_t l[5] = {0, 24, 48, 96, 235}; // 235 is yuv max
|
|
|
|
bool passed = true;
|
|
float rtol = 0.05;
|
|
// generate pattern and calculate EV
|
|
int cnt = 0;
|
|
for (int i_0=0; i_0<TONE_SPLITS; i_0++) {
|
|
for (int i_1=0; i_1<TONE_SPLITS; i_1++) {
|
|
for (int i_2=0; i_2<TONE_SPLITS; i_2++) {
|
|
for (int i_3=0; i_3<TONE_SPLITS; i_3++) {
|
|
int h_0 = i_0 * H / TONE_SPLITS;
|
|
int h_1 = i_1 * (H - h_0) / TONE_SPLITS;
|
|
int h_2 = i_2 * (H - h_0 - h_1) / TONE_SPLITS;
|
|
int h_3 = i_3 * (H - h_0 - h_1 - h_2) / TONE_SPLITS;
|
|
int h_4 = H - h_0 - h_1 - h_2 - h_3;
|
|
memset(&fb_y[0], l[0], h_0*W);
|
|
memset(&fb_y[h_0*W], l[1], h_1*W);
|
|
memset(&fb_y[h_0*W+h_1*W], l[2], h_2*W);
|
|
memset(&fb_y[h_0*W+h_1*W+h_2*W], l[3], h_3*W);
|
|
memset(&fb_y[h_0*W+h_1*W+h_2*W+h_3*W], l[4], h_4*W);
|
|
float ev = set_exposure_target((const CameraBuf*) &cb, rect, 1, 1);
|
|
// printf("%d/%d/%d/%d/%d ev is %f\n", h_0, h_1, h_2, h_3, h_4, ev);
|
|
// printf("%f\n", ev);
|
|
|
|
// compare to gt
|
|
float evgt = gts[cnt];
|
|
if (fabs(ev - evgt) > rtol*evgt) {
|
|
passed = false;
|
|
}
|
|
|
|
// report
|
|
printf("%d/%d/%d/%d/%d: ev %f, gt %f, err %f\n", h_0, h_1, h_2, h_3, h_4, ev, evgt, fabs(ev - evgt) / (evgt != 0 ? evgt : 0.00001f));
|
|
cnt++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
assert(passed);
|
|
|
|
delete[] fb_y;
|
|
}
|