diff options
| -rw-r--r-- | iq.c | 51 | ||||
| -rw-r--r-- | iq.h | 8 | ||||
| -rw-r--r-- | live.c | 4 | ||||
| -rw-r--r-- | snapshot.c | 4 | 
4 files changed, 48 insertions, 19 deletions
| @@ -93,6 +93,10 @@ void iq_aewb_process(struct iq_tuning *iq,   */  void iq_params_init(struct iq_params *params)  { +	params->window.left = 0.0; +	params->window.top = 0.0; +	params->window.width = 1.0; +	params->window.height = 1.0;  	params->mean_level = 0.15;  	params->exposure = 1000;  	params->exposure_min = 10; @@ -120,7 +124,8 @@ void iq_params_init(struct iq_params *params)   */  int iq_params_parse(struct iq_params *params, const char *arg)  { -	unsigned int *val_uint; +	unsigned int *val_uint = NULL; +	float *val_float = NULL;  	const char *value;  	unsigned int size;  	char *endp; @@ -132,17 +137,6 @@ int iq_params_parse(struct iq_params *params, const char *arg)  	size = value - arg;  	value++; -	if (strncmp(arg, "mean-level", size) == 0) { -		params->mean_level = strtof(value, &endp); -		if (*endp != '\0') -			return -EINVAL; - -		if (params->mean_level <= 0 || params-> mean_level >= 1) -			return -ERANGE; - -		return 0; -	} -  	if (strncmp(arg, "exposure-def", size) == 0)  		val_uint = ¶ms->exposure;  	else if (strncmp(arg, "exposure-min", size) == 0) @@ -155,12 +149,31 @@ int iq_params_parse(struct iq_params *params, const char *arg)  		val_uint = ¶ms->gain_min;  	else if (strncmp(arg, "gain-max", size) == 0)  		val_uint = ¶ms->gain_max; +	else if (strncmp(arg, "mean-level", size) == 0) +		val_float = ¶ms->mean_level; +	else if (strncmp(arg, "window-left", size) == 0) +		val_float = ¶ms->window.left; +	else if (strncmp(arg, "window-top", size) == 0) +		val_float = ¶ms->window.top; +	else if (strncmp(arg, "window-width", size) == 0) +		val_float = ¶ms->window.width; +	else if (strncmp(arg, "window-height", size) == 0) +		val_float = ¶ms->window.height;  	else  		return -EINVAL; -	*val_uint = strtoul(value, &endp, 10); -	if (*endp != '\0') -		return -EINVAL; +	if (val_uint != NULL) { +		*val_uint = strtoul(value, &endp, 10); +		if (*endp != '\0') +			return -EINVAL; +	} else { +		*val_float = strtof(value, &endp); +		if (*endp != '\0') +			return -EINVAL; + +		if (*val_float < 0 || *val_float > 1) +			return -ERANGE; +	}  	return 0;  } @@ -187,10 +200,10 @@ struct iq_tuning *iq_init(struct omap3_isp_device *isp,  	omap3_isp_ccdc_set_black_level(isp, iq->params.black_level);  	omap3_isp_stats_get_format(isp, &format); -	window.left = 0; -	window.top = 0; -	window.width = format.width; -	window.height = format.height; +	window.left = params->window.left * format.width; +	window.top = params->window.top * format.height; +	window.width = params->window.width * format.width; +	window.height = params->window.height * format.height;  	omap3_isp_aewb_configure(isp, &window, iq->pix_max - iq->params.black_level - 1);  	omap3_isp_stats_enable(isp, true); @@ -29,6 +29,7 @@ struct omap3_isp_aewb_stats;  /**   * struct iq_params - Image quality tuning parameters + * @window: Statistics computation window (fraction of the image size)   * @mean_level: Target mean luminance level (fraction of the maximum)   * @exposure: Initial exposure value (sensor-specific units)   * @exposure_min: Minimum exposure value @@ -39,6 +40,13 @@ struct omap3_isp_aewb_stats;   * @black_level: Black level offset   */  struct iq_params { +	struct { +		float left; +		float top; +		float width; +		float height; +	} window; +  	float mean_level;  	unsigned int exposure; @@ -334,6 +334,10 @@ static void usage(const char *argv0)  	printf("- gain-min		Sensor gain minimum value\n");  	printf("- gain-max		Sensor gain maximum value\n");  	printf("- mean-level		Mean luminance target level (float [0-1])\n"); +	printf("- window-left		Statistics window left (float [0-1])\n"); +	printf("- window-top		Statistics window top (float [0-1])\n"); +	printf("- window-width		Statistics window width (float [0-1])\n"); +	printf("- window-height		Statistics window height (float [0-1])\n");  }  #define OPT_AEWB_PARAM		256 @@ -409,6 +409,10 @@ static void usage(const char *argv0)  	printf("- gain-min		Sensor gain minimum value\n");  	printf("- gain-max		Sensor gain maximum value\n");  	printf("- mean-level		Mean luminance target level (float [0-1])\n"); +	printf("- window-left		Statistics window left (float [0-1])\n"); +	printf("- window-top		Statistics window top (float [0-1])\n"); +	printf("- window-width		Statistics window width (float [0-1])\n"); +	printf("- window-height		Statistics window height (float [0-1])\n");  }  #define OPT_AEWB_PARAM		256 | 
