diff options
author | Paul B Mahol <onemda@gmail.com> | 2019-09-22 22:31:07 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2019-09-22 22:32:37 +0200 |
commit | 043038ea56ab9349d85cbf8da27a6944e5f75100 (patch) | |
tree | e18569069b22b6ed58e67e47e1a528eef785e483 /libavfilter/vf_v360.c | |
parent | a8925d264a95c63c59faa94f697f51cb4dff09b4 (diff) |
avfilter/vf_v360: fix xyz_to_mercator()
Diffstat (limited to 'libavfilter/vf_v360.c')
-rw-r--r-- | libavfilter/vf_v360.c | 8 |
1 files 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); } } |