[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