e38f57af46
Clang Build CI / build-release (push) Failing after 54s
Clang Build CI / run-video (push) Successful in 1m12s
Clang Lint CI / lint-no-video (push) Successful in 1m12s
Clang Build CI / run-no-video (push) Successful in 1m17s
Clang Lint CI / lint-video (push) Successful in 4m33s
45 lines
831 B
GLSL
45 lines
831 B
GLSL
#ifndef INC_YUYV
|
|
#define INC_YUYV
|
|
|
|
const int YUYV_FOURCC = 1448695129;
|
|
|
|
// https://en.wikipedia.org/wiki/Y%E2%80%B2UV
|
|
const mat3x3 yuyv_to_rgb_bt709 = {
|
|
{
|
|
1,
|
|
1,
|
|
1
|
|
},
|
|
{
|
|
0,
|
|
-0.21482,
|
|
2.12798
|
|
},
|
|
{
|
|
1.28033,
|
|
-0.38059,
|
|
0
|
|
}
|
|
};
|
|
|
|
vec4 yuyvTex(sampler2D tex, vec2 vUV, int base_width) {
|
|
float w = base_width - 1;
|
|
int x = int(vUV.x * w);
|
|
|
|
int xU = x - x % 2;
|
|
int xV = x - x % 2 + 1;
|
|
|
|
vec4 tU = texture(tex, vec2(xU / w, 1 - vUV.y));
|
|
vec4 tV = texture(tex, vec2(xV / w, 1 - vUV.y));
|
|
|
|
vec3 yuv = vec3(
|
|
x % 2 == 0 ? tU.x : tV.x,
|
|
tU.y - 0.5,
|
|
tV.y - 0.5
|
|
);
|
|
|
|
return vec4(yuyv_to_rgb_bt709 * yuv, 1.0);
|
|
}
|
|
|
|
#endif
|