renamed linear_srgb to srgb and srgb_linear to linear

master
Ahmet Inan 2014-01-28 09:17:06 +01:00
rodzic 6997edfba7
commit 93c8bad3c6
3 zmienionych plików z 31 dodań i 31 usunięć

Wyświetl plik

@ -84,15 +84,15 @@ void y_scan(int y)
int x1 = fclampf(x0 + 1, 0.0, 319.0); int x1 = fclampf(x0 + 1, 0.0, 319.0);
int off0 = 3 * y * img->width + 3 * x0; int off0 = 3 * y * img->width + 3 * x0;
int off1 = 3 * y * img->width + 3 * x1; int off1 = 3 * y * img->width + 3 * x1;
float R0 = srgb_linear(img->pixel[off0 + 0]); float R0 = linear(img->pixel[off0 + 0]);
float G0 = srgb_linear(img->pixel[off0 + 1]); float G0 = linear(img->pixel[off0 + 1]);
float B0 = srgb_linear(img->pixel[off0 + 2]); float B0 = linear(img->pixel[off0 + 2]);
float R1 = srgb_linear(img->pixel[off1 + 0]); float R1 = linear(img->pixel[off1 + 0]);
float G1 = srgb_linear(img->pixel[off1 + 1]); float G1 = linear(img->pixel[off1 + 1]);
float B1 = srgb_linear(img->pixel[off1 + 2]); float B1 = linear(img->pixel[off1 + 2]);
uint8_t R = linear_srgb(flerpf(R0, R1, xf - (float)x0)); uint8_t R = srgb(flerpf(R0, R1, xf - (float)x0));
uint8_t G = linear_srgb(flerpf(G0, G1, xf - (float)x0)); uint8_t G = srgb(flerpf(G0, G1, xf - (float)x0));
uint8_t B = linear_srgb(flerpf(B0, B1, xf - (float)x0)); uint8_t B = srgb(flerpf(B0, B1, xf - (float)x0));
add_freq(1500.0 + 800.0 * Y_RGB(R, G, B) / 255.0); add_freq(1500.0 + 800.0 * Y_RGB(R, G, B) / 255.0);
} }
} }
@ -107,15 +107,15 @@ void v_scan(int y)
int evn1 = 3 * y * img->width + 6 * x1; int evn1 = 3 * y * img->width + 6 * x1;
int odd0 = 3 * (y + 1) * img->width + 6 * x0; int odd0 = 3 * (y + 1) * img->width + 6 * x0;
int odd1 = 3 * (y + 1) * img->width + 6 * x1; int odd1 = 3 * (y + 1) * img->width + 6 * x1;
float R0 = (srgb_linear(img->pixel[evn0 + 0]) + srgb_linear(img->pixel[odd0 + 0]) + srgb_linear(img->pixel[evn0 + 3]) + srgb_linear(img->pixel[odd0 + 3])) / 4; float R0 = (linear(img->pixel[evn0 + 0]) + linear(img->pixel[odd0 + 0]) + linear(img->pixel[evn0 + 3]) + linear(img->pixel[odd0 + 3])) / 4;
float G0 = (srgb_linear(img->pixel[evn0 + 1]) + srgb_linear(img->pixel[odd0 + 1]) + srgb_linear(img->pixel[evn0 + 4]) + srgb_linear(img->pixel[odd0 + 4])) / 4; float G0 = (linear(img->pixel[evn0 + 1]) + linear(img->pixel[odd0 + 1]) + linear(img->pixel[evn0 + 4]) + linear(img->pixel[odd0 + 4])) / 4;
float B0 = (srgb_linear(img->pixel[evn0 + 2]) + srgb_linear(img->pixel[odd0 + 2]) + srgb_linear(img->pixel[evn0 + 5]) + srgb_linear(img->pixel[odd0 + 5])) / 4; float B0 = (linear(img->pixel[evn0 + 2]) + linear(img->pixel[odd0 + 2]) + linear(img->pixel[evn0 + 5]) + linear(img->pixel[odd0 + 5])) / 4;
float R1 = (srgb_linear(img->pixel[evn1 + 0]) + srgb_linear(img->pixel[odd1 + 0]) + srgb_linear(img->pixel[evn1 + 3]) + srgb_linear(img->pixel[odd1 + 3])) / 4; float R1 = (linear(img->pixel[evn1 + 0]) + linear(img->pixel[odd1 + 0]) + linear(img->pixel[evn1 + 3]) + linear(img->pixel[odd1 + 3])) / 4;
float G1 = (srgb_linear(img->pixel[evn1 + 1]) + srgb_linear(img->pixel[odd1 + 1]) + srgb_linear(img->pixel[evn1 + 4]) + srgb_linear(img->pixel[odd1 + 4])) / 4; float G1 = (linear(img->pixel[evn1 + 1]) + linear(img->pixel[odd1 + 1]) + linear(img->pixel[evn1 + 4]) + linear(img->pixel[odd1 + 4])) / 4;
float B1 = (srgb_linear(img->pixel[evn1 + 2]) + srgb_linear(img->pixel[odd1 + 2]) + srgb_linear(img->pixel[evn1 + 5]) + srgb_linear(img->pixel[odd1 + 5])) / 4; float B1 = (linear(img->pixel[evn1 + 2]) + linear(img->pixel[odd1 + 2]) + linear(img->pixel[evn1 + 5]) + linear(img->pixel[odd1 + 5])) / 4;
uint8_t R = linear_srgb(flerpf(R0, R1, xf - (float)x0)); uint8_t R = srgb(flerpf(R0, R1, xf - (float)x0));
uint8_t G = linear_srgb(flerpf(G0, G1, xf - (float)x0)); uint8_t G = srgb(flerpf(G0, G1, xf - (float)x0));
uint8_t B = linear_srgb(flerpf(B0, B1, xf - (float)x0)); uint8_t B = srgb(flerpf(B0, B1, xf - (float)x0));
add_freq(1500.0 + 800.0 * V_RGB(R, G, B) / 255.0); add_freq(1500.0 + 800.0 * V_RGB(R, G, B) / 255.0);
} }
} }
@ -129,15 +129,15 @@ void u_scan(int y)
int evn1 = 3 * (y - 1) * img->width + 6 * x1; int evn1 = 3 * (y - 1) * img->width + 6 * x1;
int odd0 = 3 * y * img->width + 6 * x0; int odd0 = 3 * y * img->width + 6 * x0;
int odd1 = 3 * y * img->width + 6 * x1; int odd1 = 3 * y * img->width + 6 * x1;
float R0 = (srgb_linear(img->pixel[evn0 + 0]) + srgb_linear(img->pixel[odd0 + 0]) + srgb_linear(img->pixel[evn0 + 3]) + srgb_linear(img->pixel[odd0 + 3])) / 4; float R0 = (linear(img->pixel[evn0 + 0]) + linear(img->pixel[odd0 + 0]) + linear(img->pixel[evn0 + 3]) + linear(img->pixel[odd0 + 3])) / 4;
float G0 = (srgb_linear(img->pixel[evn0 + 1]) + srgb_linear(img->pixel[odd0 + 1]) + srgb_linear(img->pixel[evn0 + 4]) + srgb_linear(img->pixel[odd0 + 4])) / 4; float G0 = (linear(img->pixel[evn0 + 1]) + linear(img->pixel[odd0 + 1]) + linear(img->pixel[evn0 + 4]) + linear(img->pixel[odd0 + 4])) / 4;
float B0 = (srgb_linear(img->pixel[evn0 + 2]) + srgb_linear(img->pixel[odd0 + 2]) + srgb_linear(img->pixel[evn0 + 5]) + srgb_linear(img->pixel[odd0 + 5])) / 4; float B0 = (linear(img->pixel[evn0 + 2]) + linear(img->pixel[odd0 + 2]) + linear(img->pixel[evn0 + 5]) + linear(img->pixel[odd0 + 5])) / 4;
float R1 = (srgb_linear(img->pixel[evn1 + 0]) + srgb_linear(img->pixel[odd1 + 0]) + srgb_linear(img->pixel[evn1 + 3]) + srgb_linear(img->pixel[odd1 + 3])) / 4; float R1 = (linear(img->pixel[evn1 + 0]) + linear(img->pixel[odd1 + 0]) + linear(img->pixel[evn1 + 3]) + linear(img->pixel[odd1 + 3])) / 4;
float G1 = (srgb_linear(img->pixel[evn1 + 1]) + srgb_linear(img->pixel[odd1 + 1]) + srgb_linear(img->pixel[evn1 + 4]) + srgb_linear(img->pixel[odd1 + 4])) / 4; float G1 = (linear(img->pixel[evn1 + 1]) + linear(img->pixel[odd1 + 1]) + linear(img->pixel[evn1 + 4]) + linear(img->pixel[odd1 + 4])) / 4;
float B1 = (srgb_linear(img->pixel[evn1 + 2]) + srgb_linear(img->pixel[odd1 + 2]) + srgb_linear(img->pixel[evn1 + 5]) + srgb_linear(img->pixel[odd1 + 5])) / 4; float B1 = (linear(img->pixel[evn1 + 2]) + linear(img->pixel[odd1 + 2]) + linear(img->pixel[evn1 + 5]) + linear(img->pixel[odd1 + 5])) / 4;
uint8_t R = linear_srgb(flerpf(R0, R1, xf - (float)x0)); uint8_t R = srgb(flerpf(R0, R1, xf - (float)x0));
uint8_t G = linear_srgb(flerpf(G0, G1, xf - (float)x0)); uint8_t G = srgb(flerpf(G0, G1, xf - (float)x0));
uint8_t B = linear_srgb(flerpf(B0, B1, xf - (float)x0)); uint8_t B = srgb(flerpf(B0, B1, xf - (float)x0));
add_freq(1500.0 + 800.0 * U_RGB(R, G, B) / 255.0); add_freq(1500.0 + 800.0 * U_RGB(R, G, B) / 255.0);
} }
} }

4
yuv.c
Wyświetl plik

@ -15,7 +15,7 @@ uint8_t yuv_clamp(float x)
return tmp > 255.0 ? 255.0 : tmp; return tmp > 255.0 ? 255.0 : tmp;
} }
uint8_t linear_srgb(float linear) uint8_t srgb(float linear)
{ {
float v = fminf(fmaxf(linear, 0.0f), 1.0f); float v = fminf(fmaxf(linear, 0.0f), 1.0f);
float K0 = 0.03928f; float K0 = 0.03928f;
@ -26,7 +26,7 @@ uint8_t linear_srgb(float linear)
return 255.0f * srgb; return 255.0f * srgb;
} }
float srgb_linear(uint8_t srgb) float linear(uint8_t srgb)
{ {
float v = srgb / 255.0f; float v = srgb / 255.0f;
float K0 = 0.03928f; float K0 = 0.03928f;

4
yuv.h
Wyświetl plik

@ -10,8 +10,8 @@ You should have received a copy of the CC0 Public Domain Dedication along with t
#define YUV_H #define YUV_H
#include <stdint.h> #include <stdint.h>
uint8_t linear_srgb(float linear); uint8_t srgb(float linear);
float srgb_linear(uint8_t srgb); float linear(uint8_t srgb);
uint8_t R_YUV(uint8_t, uint8_t, uint8_t); uint8_t R_YUV(uint8_t, uint8_t, uint8_t);
uint8_t G_YUV(uint8_t, uint8_t, uint8_t); uint8_t G_YUV(uint8_t, uint8_t, uint8_t);
uint8_t B_YUV(uint8_t, uint8_t, uint8_t); uint8_t B_YUV(uint8_t, uint8_t, uint8_t);