@@ -2807,9 +2807,8 @@ static int prepare_fisheye_out(AVFilterContext *ctx)
{
V360Context *s = ctx->priv;
- s->flat_range[0] = s->h_fov / 180.f;
- s->flat_range[1] = s->v_fov / 180.f;
-
+ s->flat_range[0] = 0.5 * s->h_fov * M_PI / 180.f;
+ s->flat_range[1] = 0.5 * s->v_fov * M_PI / 180.f;
return 0;
}
@@ -2827,8 +2826,8 @@ static int fisheye_to_xyz(const V360Context *s,
int i, int j, int width, int height,
float *vec)
{
- const float uf = s->flat_range[0] * ((2.f * i) / width - 1.f);
- const float vf = s->flat_range[1] * ((2.f * j + 1.f) / height - 1.f);
+ const float uf = 2.f * s->flat_range[0] / M_PI * ((2.f * i) / width - 1.f);
+ const float vf = 2.f * s->flat_range[1] / M_PI * ((2.f * j + 1.f) / height - 1.f);
const float phi = atan2f(vf, uf);
const float theta = M_PI_2 * (1.f - hypotf(uf, vf));
@@ -2858,8 +2857,8 @@ static int prepare_fisheye_in(AVFilterContext *ctx)
{
V360Context *s = ctx->priv;
- s->iflat_range[0] = s->ih_fov / 180.f;
- s->iflat_range[1] = s->iv_fov / 180.f;
+ s->iflat_range[0] = 0.5 * s->ih_fov * M_PI / 180.f;
+ s->iflat_range[1] = 0.5 * s->iv_fov * M_PI / 180.f;
return 0;
}
@@ -2882,10 +2881,10 @@ static int xyz_to_fisheye(const V360Context *s,
{
const float h = hypotf(vec[0], vec[1]);
const float lh = h > 0.f ? h : 1.f;
- const float phi = atan2f(h, vec[2]) / M_PI;
+ const float phi = atan2f(h, vec[2]);
- float uf = vec[0] / lh * phi / s->iflat_range[0];
- float vf = vec[1] / lh * phi / s->iflat_range[1];
+ float uf = 0.5f * vec[0] / lh * phi / s->iflat_range[0];
+ float vf = 0.5f * vec[1] / lh * phi / s->iflat_range[1];
const int visible = hypotf(uf, vf) <= 0.5f;
int ui, vi;
This changes the iflat_range and flat_range values for the fisheye projection so that they indicate the maximum angle between an observed point and the center (direction the camera is facing). This matches the meaning of those variables in the flat projection. Signed-off-by: Daniel Playfair Cal <daniel.playfair.cal@gmail.com> --- libavfilter/vf_v360.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-)