[FFmpeg-cvslog] avfilter/vf_v360: fix xyz_to_mercator()

Paul B Mahol git at videolan.org
Sun Sep 22 23:37:29 EEST 2019


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sun Sep 22 22:31:07 2019 +0200| [043038ea56ab9349d85cbf8da27a6944e5f75100] | committer: Paul B Mahol

avfilter/vf_v360: fix xyz_to_mercator()

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

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

diff --git a/libavfilter/vf_v360.c b/libavfilter/vf_v360.c
index 3b3ca16578..3d855cb5b4 100644
--- a/libavfilter/vf_v360.c
+++ b/libavfilter/vf_v360.c
@@ -1555,12 +1555,12 @@ static void xyz_to_mercator(const V360Context *s,
                             uint16_t us[4][4], uint16_t vs[4][4], float *du, float *dv)
 {
     const float phi   = atan2f(vec[0], -vec[2]) * s->input_mirror_modifier[0];
-    const float theta = 0.5f * asinhf(vec[1] / sqrtf(1.f - vec[1] * vec[1])) * s->input_mirror_modifier[1];
+    const float theta = -vec[1] * s->input_mirror_modifier[1];
     float uf, vf;
     int ui, vi;
 
-    uf = (phi   / M_PI + 1.f) * width  / 2.f;
-    vf = (theta / M_PI + 1.f) * height / 2.f;
+    uf = (phi / M_PI + 1.f) * width / 2.f;
+    vf = (av_clipf(logf((1.f + theta) / (1.f - theta)) / (2.f * M_PI), -1.f, 1.f) + 1.f) * height / 2.f;
     ui = floorf(uf);
     vi = floorf(vf);
 
@@ -1569,7 +1569,7 @@ static void xyz_to_mercator(const V360Context *s,
 
     for (int i = -1; i < 3; i++) {
         for (int j = -1; j < 3; j++) {
-            us[i + 1][j + 1] = mod(ui + j, width);
+            us[i + 1][j + 1] = av_clip(ui + j, 0, width  - 1);
             vs[i + 1][j + 1] = av_clip(vi + i, 0, height - 1);
         }
     }



More information about the ffmpeg-cvslog mailing list