Cross Reference: cconvYV12.c
xref
: /
vbox
/
src
/
VBox
/
Frontends
/
VirtualBox
/
shaders
/
cconvYV12.c
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
cconvYV12.c revision bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
6035a3d1ce01a78c316578f23393c0b7edca0548
vboxsync
#
extension
GL_ARB_texture_rectangle
:
enable
6035a3d1ce01a78c316578f23393c0b7edca0548
vboxsync
uniform
sampler2DRect
uSrcTex
;
6035a3d1ce01a78c316578f23393c0b7edca0548
vboxsync
uniform
sampler2DRect
uVTex
;
6035a3d1ce01a78c316578f23393c0b7edca0548
vboxsync
uniform
sampler2DRect
uUTex
;
64082f4699f276693cf5b1ec5886ac12234af115
vboxsync
void
vboxCConvApplyAYUV
(
vec4
color
);
9fc488be77be11a4dcb83feb09cdee11bb160746
vboxsync
void
vboxCConv
()
6035a3d1ce01a78c316578f23393c0b7edca0548
vboxsync
{
073b23b4ae48ce7c105b28442f47c9a0c7a1110f
vboxsync
vec2
clrCoordY
=
vec2
(
gl_TexCoord
[0]);
073b23b4ae48ce7c105b28442f47c9a0c7a1110f
vboxsync
vec2
clrCoordV
=
vec2
(
gl_TexCoord
[
1
]);
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
int
ixY
=
int
(
clrCoordY
.x);
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
vec2
coordY
=
vec2
(
float
(
ixY
),
clrCoordY
.y);
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
int
ixV
=
int
(
clrCoordV
.x);
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
vec2
coordV
=
vec2
(
float
(
ixV
),
clrCoordV
.y);
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
vec4
clrY
=
texture2DRect
(
uSrcTex
,
coordY
);
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
vec4
clrV
=
texture2DRect
(
uVTex
,
coordV
);
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
vec4
clrU
=
texture2DRect
(
uUTex
,
coordV
);
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
float
partY
=
clrCoordY
.x -
float
(
ixY
);
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
float
partVU
=
clrCoordV
.x -
float
(
ixV
);
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
float
y;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
float
v;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
float
u;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
if
(
partY
<
0.25
)
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
{
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
y =
clrY
.b;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
}
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
else
if
(
partY
<
0.5
)
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
{
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
y =
clrY
.g;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
}
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
else
if
(
partY
<
0.75
)
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
{
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
y =
clrY
.r;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
}
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
else
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
{
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
y =
clrY
.a;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
}
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
if
(
partVU
<
0.25
)
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
{
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
v =
clrV
.b;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
u =
clrU
.b;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
}
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
else
if
(
partVU
<
0.5
)
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
{
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
v =
clrV
.g;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
u =
clrU
.g;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
}
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
else
if
(
partVU
<
0.75
)
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
{
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
v =
clrV
.r;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
u =
clrU
.r;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
}
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
else
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
{
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
v =
clrV
.a;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
u =
clrU
.a;
bea46bb4f0a6e785631fe3c97cbe39d0a3f795c6
vboxsync
}
64082f4699f276693cf5b1ec5886ac12234af115
vboxsync
vboxCConvApplyAYUV
(
vec4
(u, y,
0.0
, v));
6035a3d1ce01a78c316578f23393c0b7edca0548
vboxsync
}