aboutsummaryrefslogtreecommitdiffstats
path: root/src/blind-convert.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/blind-convert.c')
-rw-r--r--src/blind-convert.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/blind-convert.c b/src/blind-convert.c
index fd4240d..a61baba 100644
--- a/src/blind-convert.c
+++ b/src/blind-convert.c
@@ -47,7 +47,7 @@ static size_t
remove_alpha_u16(uint16_t *buf, size_t n)
{
size_t i, j;
- long int a, max = (long int)UINT16_MAX, ymax = 0xDAF4L;
+ long int a, max = (long int)0xFF00L, ymax = 0xDAF4L;
for (i = j = 0; i < n; i += 4, j += 3) {
a = (long int)(buf[i + 3]);
buf[j + 0] = (uint16_t)(((long int)(buf[i + 0]) - 0x1001L) * a / ymax + 0x1001L);
@@ -108,19 +108,23 @@ raw1_to_raw0(uint16_t *buf, size_t n)
#define RAW2_TO_RAW3(TYPE, WITH_ALPHA)\
do {\
size_t i;\
- TYPE max = (TYPE)UINT16_MAX, ymax = (TYPE)0xDAF4;\
+ TYPE max = (TYPE)0xFF00L, ymax = (TYPE)0xDAF4L;\
if (sizeof(*in) > sizeof(*out)) {\
for (i = 0; i < n; i += 3 + WITH_ALPHA) {\
out[i + 0] = (TYPE)((long int)(in[i + 0]) - 0x1001L) / ymax;\
out[i + 1] = (TYPE)((long int)(in[i + 1]) - 0x8000L) / max;\
out[i + 2] = (TYPE)((long int)(in[i + 2]) - 0x8000L) / max;\
- if (WITH_ALPHA)\
+ if (WITH_ALPHA) {\
out[i + 3] = (TYPE)(in[i + 3]) / max;\
+ out[i + 3] = CLIP(0, out[i + 3], 1);\
+ }\
}\
} else {\
for (i = n; i; i -= 3 + WITH_ALPHA) {\
- if (WITH_ALPHA)\
+ if (WITH_ALPHA) {\
out[i - 1] = (TYPE)(in[i - 1]) / max;\
+ out[i - 1] = CLIP(0, out[i - 1], 1);\
+ }\
out[i - 1 - WITH_ALPHA] = (TYPE)((long int)(in[i - 1 - WITH_ALPHA]) - 0x8000L) / max;\
out[i - 2 - WITH_ALPHA] = (TYPE)((long int)(in[i - 2 - WITH_ALPHA]) - 0x8000L) / max;\
out[i - 3 - WITH_ALPHA] = (TYPE)((long int)(in[i - 3 - WITH_ALPHA]) - 0x1001L) / ymax;\
@@ -136,7 +140,7 @@ static void raw2a_to_raw3a_f (uint16_t *in, float *out, size_t n) { RAW2_TO_RAW
#define RAW3_TO_RAW2(TYPE, WITH_ALPHA)\
do {\
size_t i;\
- TYPE max = (TYPE)UINT16_MAX, ymax = (TYPE)0xDAF4;\
+ TYPE max = (TYPE)0xFF00L, ymax = (TYPE)0xDAF4L;\
long int y, u, v;\
if (sizeof(*in) > sizeof(*out)) {\
for (i = 0; i < n; i += 3 + WITH_ALPHA) {\