diff options
author | Paul B Mahol <onemda@gmail.com> | 2020-03-26 13:37:13 +0100 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2020-03-26 13:37:13 +0100 |
commit | 7931e766ade210b3960aba987497d5bd2eeadcf4 (patch) | |
tree | c77dd84358157d00f2a14f76252675a49bf4c958 /libavfilter/vf_v360.c | |
parent | b5dd964cdca090aed0fc6068c8967c92c594d9aa (diff) | |
download | ffmpeg-7931e766ade210b3960aba987497d5bd2eeadcf4.tar.gz |
avfilter/vf_v360: improve sg output format
Diffstat (limited to 'libavfilter/vf_v360.c')
-rw-r--r-- | libavfilter/vf_v360.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libavfilter/vf_v360.c b/libavfilter/vf_v360.c index fe0c9f3c4d..a16fd17574 100644 --- a/libavfilter/vf_v360.c +++ b/libavfilter/vf_v360.c @@ -1696,11 +1696,13 @@ static int stereographic_to_xyz(const V360Context *s, { const float x = ((2.f * i + 1.f) / width - 1.f) * s->flat_range[0]; const float y = ((2.f * j + 1.f) / height - 1.f) * s->flat_range[1]; - const float xy = x * x + y * y; + const float r = hypotf(x, y); + const float theta = atanf(r) * 2.f; + const float sin_theta = sinf(theta); - vec[0] = 2.f * x / (1.f + xy); - vec[1] = (-1.f + xy) / (1.f + xy); - vec[2] = 2.f * y / (1.f + xy); + vec[0] = x / r * sin_theta; + vec[1] = -y / r * sin_theta; + vec[2] = -cosf(theta); normalize_vector(vec); |