summaryrefslogtreecommitdiff
path: root/libavfilter
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2022-05-18 11:39:02 +0200
committerAnton Khirnov <anton@khirnov.net>2022-05-24 13:39:48 +0200
commit82784ddf33e3656594b6dc38abd0023a1584cc8e (patch)
tree3d562496917c84ab085bee29ee31b826d3f6a8c7 /libavfilter
parent58bb83c7edfd0e1e160cb836a2cc5f2ff3500cce (diff)
lavfi/vf_v360: factorize vector computation for barrelsplit
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/vf_v360.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/libavfilter/vf_v360.c b/libavfilter/vf_v360.c
index 8f36d207c9..620a995733 100644
--- a/libavfilter/vf_v360.c
+++ b/libavfilter/vf_v360.c
@@ -3765,6 +3765,7 @@ static int barrelsplit_to_xyz(const V360Context *s,
const float scaleh = s->fout_pad > 0 ? 1.f - s->fout_pad / (height / 4.f) : 1.f - s->out_pad;
const int face = floorf(y * 4.f);
+ const float dir_vert = (face == 1 || face == 3) ? 1.0f : -1.0f;
float uf, vf;
uf = x * 3.f - 2.f;
@@ -3774,36 +3775,23 @@ static int barrelsplit_to_xyz(const V360Context *s,
vf = y * 2.f;
uf = 1.f - uf;
vf = 0.5f - vf;
-
- l_x = (0.5f - uf) / scalew;
- l_y = -0.5f;
- l_z = (0.5f - vf) / scaleh;
break;
case 1:
vf = y * 2.f;
uf = 1.f - uf;
vf = 1.f - (vf - 0.5f);
-
- l_x = (0.5f - uf) / scalew;
- l_y = 0.5f;
- l_z = (-0.5f + vf) / scaleh;
break;
case 2:
vf = y * 2.f - 0.5f;
vf = 1.f - (1.f - vf);
-
- l_x = (0.5f - uf) / scalew;
- l_y = -0.5f;
- l_z = (0.5f - vf) / scaleh;
break;
case 3:
vf = y * 2.f - 1.5f;
-
- l_x = (0.5f - uf) / scalew;
- l_y = 0.5f;
- l_z = (-0.5f + vf) / scaleh;
break;
}
+ l_x = (0.5f - uf) / scalew;
+ l_y = 0.5f * dir_vert;
+ l_z = (vf - 0.5f) * dir_vert / scaleh;
}
vec[0] = l_x;