[FFmpeg-cvslog] avfilter/vf_v360: simplify xyz_to_dfisheye() calculations

Paul B Mahol git at videolan.org
Sat Sep 21 22:37:27 EEST 2019


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sat Sep 21 21:33:03 2019 +0200| [073d22696e3e1afda3c2cc786a94caadb30d5b5f] | committer: Paul B Mahol

avfilter/vf_v360: simplify xyz_to_dfisheye() calculations

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=073d22696e3e1afda3c2cc786a94caadb30d5b5f
---

 libavfilter/vf_v360.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/libavfilter/vf_v360.c b/libavfilter/vf_v360.c
index 741a626bc8..fbaa1c4f89 100644
--- a/libavfilter/vf_v360.c
+++ b/libavfilter/vf_v360.c
@@ -2083,11 +2083,12 @@ static void xyz_to_dfisheye(const V360Context *s,
     const float ew = width / 2.f;
     const float eh = height;
 
-    const float phi   = atan2f(-vec[1], -vec[0]) * s->input_mirror_modifier[0];
-    const float theta = acosf(fabsf(vec[2])) / M_PI * s->input_mirror_modifier[1];
+    const float h     = hypotf(vec[0], vec[1]);
+    const float lh    = h > 0.f ? h : 1.f;
+    const float theta = acosf(fabsf(vec[2])) / M_PI;
 
-    float uf = (theta * cosf(phi) * scale + 0.5f) * ew;
-    float vf = (theta * sinf(phi) * scale + 0.5f) * eh;
+    float uf = (theta * (-vec[0] / lh) * s->input_mirror_modifier[0] * scale + 0.5f) * ew;
+    float vf = (theta * (-vec[1] / lh) * s->input_mirror_modifier[1] * scale + 0.5f) * eh;
 
     int ui, vi;
     int u_shift;



More information about the ffmpeg-cvslog mailing list