From: Paul B Mahol Date: Sat, 21 Sep 2019 19:17:37 +0000 (+0200) Subject: avfilter/vf_v360: simplify dfisheye_to_xyz() calculations X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=b342678bc47b4e502642e11b05215ed4bc554c33;p=ffmpeg avfilter/vf_v360: simplify dfisheye_to_xyz() calculations --- diff --git a/libavfilter/vf_v360.c b/libavfilter/vf_v360.c index ea4c2003ecf..741a626bc85 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);