@@ -1274,6 +1274,23 @@ namespace maix::camera
1274
1274
}
1275
1275
}
1276
1276
1277
+ static void _config_extern_register_of_720p90_os04a10 (double exptime_ms)
1278
+ {
1279
+ char cmd[128 ];
1280
+ double base_exptime_ms = 1000.0 / 90.0 ;
1281
+ if (exptime_ms > base_exptime_ms) {
1282
+ uint64_t base_value = 0x5cc ;
1283
+ double scale = 132.839999726 ;
1284
+ uint64_t reg_val = base_value + (exptime_ms - base_exptime_ms) * scale;
1285
+ snprintf (cmd, sizeof (cmd), " i2ctransfer -fy 4 w4@0x36 0x38 0x0c %#.2x %#.2x" , (uint8_t )((reg_val >> 8 ) & 0xff ), (uint8_t )(reg_val & 0xff ));
1286
+ system (cmd);
1287
+ } else {
1288
+ uint64_t reg_val = 0x05cc ;
1289
+ snprintf (cmd, sizeof (cmd), " i2ctransfer -fy 4 w4@0x36 0x38 0x0c %#.2x %#.2x" , (uint8_t )((reg_val >> 8 ) & 0xff ), (uint8_t )(reg_val & 0xff ));
1290
+ system (cmd);
1291
+ }
1292
+ }
1293
+
1277
1294
err::Err Camera::set_fps (double fps) {
1278
1295
double new_fps = fps;
1279
1296
camera_priv_t *priv = (camera_priv_t *)this ->_param ;
@@ -1282,12 +1299,17 @@ namespace maix::camera
1282
1299
new_fps = fps / 2 ;
1283
1300
break ;
1284
1301
case OV_OS04A10_MIPI_4M_1440P_30FPS_12BIT:
1285
- case OV_OS04A10_MIPI_4M_720P90_12BIT:
1286
1302
{
1287
1303
int exp_time_ms = (int )(1000.0 / fps);
1288
1304
_config_extern_register_of_os04a10 (exp_time_ms);
1289
1305
}
1290
1306
break ;
1307
+ case OV_OS04A10_MIPI_4M_720P90_12BIT:
1308
+ {
1309
+ double exp_time_ms = 1000.0 / fps;
1310
+ _config_extern_register_of_720p90_os04a10 (exp_time_ms);
1311
+ }
1312
+ break ;
1291
1313
case SMS_SC035GS_MIPI_480P_120FPS_12BIT:
1292
1314
err::check_raise (err::ERR_NOT_IMPL, " SC035GS set_fps not support" );
1293
1315
break ;
@@ -1313,10 +1335,13 @@ namespace maix::camera
1313
1335
} else {
1314
1336
switch (priv->sns_type ) {
1315
1337
case OV_OS04A10_MIPI_4M_1440P_30FPS_12BIT:
1316
- case OV_OS04A10_MIPI_4M_720P90_12BIT:
1317
1338
mmf_set_exptime (_ch, value);
1318
1339
_config_extern_register_of_os04a10 (value / 1000 );
1319
1340
break ;
1341
+ case OV_OS04A10_MIPI_4M_720P90_12BIT:
1342
+ mmf_set_exptime (_ch, value);
1343
+ _config_extern_register_of_720p90_os04a10 ((double )value / 1000 );
1344
+ break ;
1320
1345
default :
1321
1346
mmf_set_exptime (_ch, value);
1322
1347
break ;
@@ -1531,11 +1556,15 @@ namespace maix::camera
1531
1556
} else {
1532
1557
switch (priv->sns_type ) {
1533
1558
case OV_OS04A10_MIPI_4M_1440P_30FPS_12BIT:
1534
- case OV_OS04A10_MIPI_4M_720P90_12BIT:
1535
1559
if (value == 0 ) {
1536
1560
_config_extern_register_of_os04a10 (0 ); // revert exposure time register of os04a10
1537
1561
}
1538
1562
break ;
1563
+ case OV_OS04A10_MIPI_4M_720P90_12BIT:
1564
+ if (value == 0 ) {
1565
+ _config_extern_register_of_720p90_os04a10 (0 ); // revert exposure time register of os04a10
1566
+ }
1567
+ break ;
1539
1568
default :
1540
1569
break ;
1541
1570
}
0 commit comments