|
|
|
@ -2215,12 +2215,12 @@ static void pannini_to_xyz(const V360Context *s, |
|
|
|
|
const float vf = ((2.f * j) / height - 1.f); |
|
|
|
|
|
|
|
|
|
const float d = s->h_fov; |
|
|
|
|
float k = uf * uf / ((d + 1.f) * (d + 1.f)); |
|
|
|
|
float dscr = k * k * d * d - (k + 1) * (k * d * d - 1.f); |
|
|
|
|
float clon = (-k * d + sqrtf(dscr)) / (k + 1.f); |
|
|
|
|
float S = (d + 1.f) / (d + clon); |
|
|
|
|
float lon = -(M_PI + atan2f(uf, S * clon)); |
|
|
|
|
float lat = -atan2f(vf, S); |
|
|
|
|
const float k = uf * uf / ((d + 1.f) * (d + 1.f)); |
|
|
|
|
const float dscr = k * k * d * d - (k + 1.f) * (k * d * d - 1.f); |
|
|
|
|
const float clon = (-k * d + sqrtf(dscr)) / (k + 1.f); |
|
|
|
|
const float S = (d + 1.f) / (d + clon); |
|
|
|
|
const float lon = -(M_PI + atan2f(uf, S * clon)); |
|
|
|
|
const float lat = -atan2f(vf, S); |
|
|
|
|
|
|
|
|
|
vec[0] = sinf(lon) * cosf(lat); |
|
|
|
|
vec[1] = sinf(lat); |
|
|
|
@ -2516,7 +2516,7 @@ static void multiply_matrix(float c[3][3], const float a[3][3], const float b[3] |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < 3; i++) { |
|
|
|
|
for (int j = 0; j < 3; j++) { |
|
|
|
|
float sum = 0; |
|
|
|
|
float sum = 0.f; |
|
|
|
|
|
|
|
|
|
for (int k = 0; k < 3; k++) |
|
|
|
|
sum += a[i][k] * b[k][j]; |
|
|
|
@ -3046,9 +3046,8 @@ static int config_output(AVFilterLink *outlink) |
|
|
|
|
s->map[0] = s->map[1] = s->map[2] = s->map[3] = 0; |
|
|
|
|
} else { |
|
|
|
|
s->nb_allocated = 2; |
|
|
|
|
s->map[0] = 0; |
|
|
|
|
s->map[0] = s->map[3] = 0; |
|
|
|
|
s->map[1] = s->map[2] = 1; |
|
|
|
|
s->map[3] = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < s->nb_allocated; i++) |
|
|
|
|