summaryrefslogtreecommitdiff
path: root/libavfilter/vf_v360.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2019-09-21 21:17:37 +0200
committerPaul B Mahol <onemda@gmail.com>2019-09-21 21:17:37 +0200
commitb342678bc47b4e502642e11b05215ed4bc554c33 (patch)
tree5634f61d09d240ef33b12c2d3147cc579029ca39 /libavfilter/vf_v360.c
parenta46ee096d1a57cf7e00550681c5b477eeedf9eef (diff)
avfilter/vf_v360: simplify dfisheye_to_xyz() calculations
Diffstat (limited to 'libavfilter/vf_v360.c')
-rw-r--r--libavfilter/vf_v360.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/libavfilter/vf_v360.c b/libavfilter/vf_v360.c
index ea4c2003ec..741a626bc8 100644
--- a/libavfilter/vf_v360.c
+++ b/libavfilter/vf_v360.c
@@ -2048,16 +2048,15 @@ static void dfisheye_to_xyz(const V360Context *s,
const float uf = ((2.f * ei) / ew - 1.f) * scale;
const float vf = ((2.f * j) / eh - 1.f) * scale;
- const float phi = M_PI + atan2f(vf, uf * m);
- const float theta = m * M_PI_2 * (1.f - hypotf(uf, vf));
+ const float h = hypotf(uf, vf);
+ const float lh = h > 0.f ? h : 1.f;
+ const float theta = m * M_PI_2 * (1.f - h);
- const float sin_phi = sinf(phi);
- const float cos_phi = cosf(phi);
const float sin_theta = sinf(theta);
const float cos_theta = cosf(theta);
- vec[0] = cos_theta * cos_phi;
- vec[1] = cos_theta * sin_phi;
+ vec[0] = cos_theta * uf / lh;
+ vec[1] = cos_theta * -vf / lh;
vec[2] = sin_theta;
normalize_vector(vec);