@@ -134,6 +134,8 @@ enum {
134
134
PROP_GAMMA,
135
135
PROP_GAIN,
136
136
PROP_EXPOSURE,
137
+ PROP_EXPOSURE_RANGE_MIN,
138
+ PROP_EXPOSURE_RANGE_MAX,
137
139
PROP_AEC_AGC,
138
140
PROP_AEC_AGC_ROI_X,
139
141
PROP_AEC_AGC_ROI_Y,
@@ -322,6 +324,8 @@ typedef enum {
322
324
#define DEFAULT_PROP_GAMMA 8
323
325
#define DEFAULT_PROP_GAIN 60
324
326
#define DEFAULT_PROP_EXPOSURE 80
327
+ #define DEFAULT_PROP_EXPOSURE_RANGE_MIN 28
328
+ #define DEFAULT_PROP_EXPOSURE_RANGE_MAX 66000
325
329
#define DEFAULT_PROP_AEG_AGC 1
326
330
#define DEFAULT_PROP_AEG_AGC_ROI_X -1
327
331
#define DEFAULT_PROP_AEG_AGC_ROI_Y -1
@@ -1343,6 +1347,18 @@ static void gst_zedsrc_class_init(GstZedSrcClass *klass) {
1343
1347
g_param_spec_int (" ctrl-exposure" , " Camera control: exposure" , " Camera exposure" , 0 , 100 ,
1344
1348
DEFAULT_PROP_EXPOSURE,
1345
1349
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
1350
+ g_object_class_install_property (
1351
+ gobject_class, PROP_EXPOSURE_RANGE_MIN,
1352
+ g_param_spec_int (" ctrl-exposure-range-min" , " Minimum Exposure time [µsec]" ,
1353
+ " Minimum exposure time in microseconds for the automatic exposure setting" ,
1354
+ 28 , 66000 , DEFAULT_PROP_EXPOSURE_RANGE_MIN,
1355
+ (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
1356
+ g_object_class_install_property (
1357
+ gobject_class, PROP_EXPOSURE_RANGE_MAX,
1358
+ g_param_spec_int (" ctrl-exposure-range-max" , " Maximum Exposure time [µsec]" ,
1359
+ " Maximum exposure time in microseconds for the automatic exposure setting" ,
1360
+ 28 , 66000 , DEFAULT_PROP_EXPOSURE_RANGE_MAX,
1361
+ (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
1346
1362
g_object_class_install_property (
1347
1363
gobject_class, PROP_AEC_AGC,
1348
1364
g_param_spec_boolean (" ctrl-aec-agc" , " Camera control: automatic gain and exposure" ,
@@ -1507,6 +1523,8 @@ static void gst_zedsrc_init(GstZedSrc *src) {
1507
1523
src->gamma = DEFAULT_PROP_GAMMA;
1508
1524
src->gain = DEFAULT_PROP_GAIN;
1509
1525
src->exposure = DEFAULT_PROP_EXPOSURE;
1526
+ src->exposureRange_min = DEFAULT_PROP_EXPOSURE_RANGE_MIN;
1527
+ src->exposureRange_max = DEFAULT_PROP_EXPOSURE_RANGE_MAX;
1510
1528
src->aec_agc = DEFAULT_PROP_AEG_AGC;
1511
1529
src->aec_agc_roi_x = DEFAULT_PROP_AEG_AGC_ROI_X;
1512
1530
src->aec_agc_roi_y = DEFAULT_PROP_AEG_AGC_ROI_Y;
@@ -1780,6 +1798,12 @@ void gst_zedsrc_set_property(GObject *object, guint property_id, const GValue *v
1780
1798
src->exposure = g_value_get_int (value);
1781
1799
src->exposure_gain_updated = TRUE ;
1782
1800
break ;
1801
+ case PROP_EXPOSURE_RANGE_MIN:
1802
+ src->exposureRange_min = g_value_get_int (value);
1803
+ break ;
1804
+ case PROP_EXPOSURE_RANGE_MAX:
1805
+ src->exposureRange_max = g_value_get_int (value);
1806
+ break ;
1783
1807
case PROP_AEC_AGC:
1784
1808
src->aec_agc = g_value_get_boolean (value);
1785
1809
src->exposure_gain_updated = TRUE ;
@@ -2068,6 +2092,12 @@ void gst_zedsrc_get_property(GObject *object, guint property_id, GValue *value,
2068
2092
case PROP_EXPOSURE:
2069
2093
g_value_set_int (value, src->exposure );
2070
2094
break ;
2095
+ case PROP_EXPOSURE_RANGE_MIN:
2096
+ g_value_set_int (value, src->exposureRange_min );
2097
+ break ;
2098
+ case PROP_EXPOSURE_RANGE_MAX:
2099
+ g_value_set_int (value, src->exposureRange_max );
2100
+ break ;
2071
2101
case PROP_AEC_AGC:
2072
2102
g_value_set_boolean (value, src->aec_agc );
2073
2103
break ;
@@ -2275,7 +2305,7 @@ static gboolean gst_zedsrc_start(GstBaseSrc *bsrc) {
2275
2305
init_params.camera_disable_self_calib = src->camera_disable_self_calib == TRUE ;
2276
2306
GST_INFO (" * Disable self calibration: %s" ,
2277
2307
(init_params.camera_disable_self_calib ? " TRUE" : " FALSE" ));
2278
-
2308
+
2279
2309
sl::String opencv_calibration_file (src->opencv_calibration_file .str );
2280
2310
init_params.optional_opencv_calibration_file = opencv_calibration_file;
2281
2311
GST_INFO (" * Calibration File: %s " , init_params.optional_opencv_calibration_file .c_str ());
@@ -2357,6 +2387,9 @@ static gboolean gst_zedsrc_start(GstBaseSrc *bsrc) {
2357
2387
2358
2388
src->zed .setCameraSettings (sl::VIDEO_SETTINGS::AEC_AGC_ROI, roi, side);
2359
2389
}
2390
+
2391
+ src->zed .setCameraSettings (sl::VIDEO_SETTINGS::AUTO_EXPOSURE_TIME_RANGE, src->exposureRange_min , src->exposureRange_max );
2392
+ GST_INFO (" * AUTO EXPOSURE TIME RANGE: [%d,%d]" , src->exposureRange_min , src->exposureRange_max );
2360
2393
}
2361
2394
if (src->whitebalance_temperature_auto == FALSE ) {
2362
2395
src->zed .setCameraSettings (sl::VIDEO_SETTINGS::WHITEBALANCE_AUTO,
@@ -2405,13 +2438,11 @@ static gboolean gst_zedsrc_start(GstBaseSrc *bsrc) {
2405
2438
src->roi_y >= 0 && src->roi_y < resolution.height &&
2406
2439
roi_x_end <= resolution.width && roi_y_end <= resolution.height ) {
2407
2440
2408
- sl::uchar1 uint0 = 0 ;
2409
- sl::uchar1 uint1 = 1 ;
2410
2441
sl::Mat roi_mask (resolution, sl::MAT_TYPE::U8_C1, sl::MEM::CPU);
2411
- roi_mask.setTo (uint0 );
2412
- for (int row = src->roi_y ; row < roi_y_end; row ++)
2413
- for (int col = src->roi_y ; col < roi_x_end; col ++)
2414
- roi_mask.setValue (col, row, uint1 );
2442
+ roi_mask.setTo <sl::uchar1>( 0 , sl::MEM::CPU );
2443
+ for (unsigned int v = src->roi_y ; v < roi_y_end; v ++)
2444
+ for (unsigned int u = src->roi_x ; u < roi_x_end; u ++)
2445
+ roi_mask.setValue <sl::uchar1>(u, v, 255 , sl::MEM::CPU );
2415
2446
2416
2447
GST_INFO (" * ROI mask: (%d,%d)-%dx%d" ,
2417
2448
src->roi_x , src->roi_y , src->roi_w , src->roi_h );
0 commit comments