Another 'small' speedup for dcp

This commit is contained in:
heckflosse 2016-06-10 00:20:03 +02:00
parent 3aa9947a37
commit eedb9f39bc

View File

@ -420,8 +420,8 @@ void xyCoordToTemperature(const double white_xy[2], double* temp, double* tint)
} }
struct DCPProfile::ApplyState::Data { struct DCPProfile::ApplyState::Data {
double pro_photo[3][3]; float pro_photo[3][3];
double work[3][3]; float work[3][3];
bool already_pro_photo; bool already_pro_photo;
bool use_tone_curve; bool use_tone_curve;
bool apply_look_table; bool apply_look_table;
@ -1200,11 +1200,9 @@ void DCPProfile::step2ApplyTile(float* rc, float* gc, float* bc, int width, int
float g = gc[y * tile_width + x]; float g = gc[y * tile_width + x];
float b = bc[y * tile_width + x]; float b = bc[y * tile_width + x];
if (exp_scale != 1.0) {
r *= exp_scale; r *= exp_scale;
g *= exp_scale; g *= exp_scale;
b *= exp_scale; b *= exp_scale;
}
float newr, newg, newb; float newr, newg, newb;
@ -1225,8 +1223,7 @@ void DCPProfile::step2ApplyTile(float* rc, float* gc, float* bc, int width, int
if (as_in.data->apply_look_table) { if (as_in.data->apply_look_table) {
float h, s, v; float h, s, v;
Color::rgb2hsv(newr, newg, newb, h, s, v); Color::rgb2hsvdcp(newr, newg, newb, h, s, v);
h *= 6.f; // RT calculates in [0,1]
hsdApply(look_info, look_table, h, s, v); hsdApply(look_info, look_table, h, s, v);
s = CLIP01(s); s = CLIP01(s);
@ -1235,14 +1232,11 @@ void DCPProfile::step2ApplyTile(float* rc, float* gc, float* bc, int width, int
// RT range correction // RT range correction
if (h < 0.0f) { if (h < 0.0f) {
h += 6.0f; h += 6.0f;
} } else if (h >= 6.0f) {
if (h >= 6.0f) {
h -= 6.0f; h -= 6.0f;
} }
h /= 6.f; Color::hsv2rgbdcp( h, s, v, newr, newg, newb);
Color::hsv2rgb( h, s, v, newr, newg, newb);
} }
if (as_in.data->use_tone_curve) { if (as_in.data->use_tone_curve) {