[FFmpeg-cvslog] lavfi/vf_v360: factorize vector computation for barrelsplit

Anton Khirnov git at videolan.org
Tue May 24 14:45:52 EEST 2022


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Wed May 18 11:39:02 2022 +0200| [82784ddf33e3656594b6dc38abd0023a1584cc8e] | committer: Anton Khirnov

lavfi/vf_v360: factorize vector computation for barrelsplit

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

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

diff --git a/libavfilter/vf_v360.c b/libavfilter/vf_v360.c
index 8f36d207c9..620a995733 100644
--- a/libavfilter/vf_v360.c
+++ b/libavfilter/vf_v360.c
@@ -3765,6 +3765,7 @@ static int barrelsplit_to_xyz(const V360Context *s,
         const float scaleh = s->fout_pad > 0 ? 1.f - s->fout_pad / (height / 4.f) : 1.f - s->out_pad;
 
         const int face = floorf(y * 4.f);
+        const float dir_vert = (face == 1 || face == 3) ? 1.0f : -1.0f;
         float uf, vf;
 
         uf = x * 3.f - 2.f;
@@ -3774,36 +3775,23 @@ static int barrelsplit_to_xyz(const V360Context *s,
             vf = y * 2.f;
             uf = 1.f - uf;
             vf = 0.5f - vf;
-
-            l_x = (0.5f - uf) / scalew;
-            l_y = -0.5f;
-            l_z = (0.5f - vf) / scaleh;
             break;
         case 1:
             vf = y * 2.f;
             uf = 1.f - uf;
             vf = 1.f - (vf - 0.5f);
-
-            l_x = (0.5f - uf) / scalew;
-            l_y =  0.5f;
-            l_z = (-0.5f + vf) / scaleh;
             break;
         case 2:
             vf = y * 2.f - 0.5f;
             vf = 1.f - (1.f - vf);
-
-            l_x = (0.5f - uf) / scalew;
-            l_y = -0.5f;
-            l_z = (0.5f - vf) / scaleh;
             break;
         case 3:
             vf = y * 2.f - 1.5f;
-
-            l_x = (0.5f - uf) / scalew;
-            l_y =  0.5f;
-            l_z = (-0.5f + vf) / scaleh;
             break;
         }
+        l_x = (0.5f - uf) / scalew;
+        l_y =  0.5f * dir_vert;
+        l_z = (vf - 0.5f) * dir_vert / scaleh;
     }
 
     vec[0] = l_x;



More information about the ffmpeg-cvslog mailing list