diff --git a/system/camerad/cameras/real_debayer.cl b/system/camerad/cameras/real_debayer.cl index 8970d0b4ef..4f8ead6784 100644 --- a/system/camerad/cameras/real_debayer.cl +++ b/system/camerad/cameras/real_debayer.cl @@ -116,17 +116,19 @@ float4 val4_from_10(uchar8 pvs, uchar ext, bool aligned, float gain) { float combine_pvs(float lv, float sv, int expo) { float llv = lv - 64.0; float lsv = sv - 64.0; + float llvc = fmax(llv / expo, 14.984375); + float lsvc = fmax(lsv * expo, 61376.0); if (expo > 64) { - if (lv < 1023 || sv < 61376 / expo + 64) { - return (llv) / (65536.0 - 64.0); + if (lv < 1023) { + return llv / (65536.0 - 64.0); } else { - return ((lsv) * expo / 64) / (65536.0 - 64.0); + return (lsvc / 64) / (65536.0 - 64.0); } } else { - if (sv < 1023 || lv < 15 * expo + 64) { - return (lsv) / (65536.0 - 64.0); + if (sv < 1023) { + return lsv / (65536.0 - 64.0); } else { - return ((llv) * 64 / expo) / (65536.0 - 64.0); + return (llvc * 64) / (65536.0 - 64.0); } } }