| @@ -639,6 +639,22 @@ static inline int reflecty(int y, int h) | |||||
| return y; | return y; | ||||
| } | } | ||||
| /** | |||||
| * Reflect x operation for equirect. | |||||
| * | |||||
| * @param x input horizontal position | |||||
| * @param y input vertical position | |||||
| * @param w input width | |||||
| * @param h input height | |||||
| */ | |||||
| static inline int ereflectx(int x, int y, int w, int h) | |||||
| { | |||||
| if (y < 0 || y >= h) | |||||
| x += w / 2; | |||||
| return mod(x, w); | |||||
| } | |||||
| /** | /** | ||||
| * Reflect x operation. | * Reflect x operation. | ||||
| * | * | ||||
| @@ -1745,8 +1761,8 @@ static int xyz_to_equirect(const V360Context *s, | |||||
| for (int i = 0; i < 4; i++) { | for (int i = 0; i < 4; i++) { | ||||
| for (int j = 0; j < 4; j++) { | for (int j = 0; j < 4; j++) { | ||||
| us[i][j] = mod(ui + j - 1, width); | |||||
| vs[i][j] = av_clip(vi + i - 1, 0, height - 1); | |||||
| us[i][j] = ereflectx(ui + j - 1, vi + i - 1, width, height); | |||||
| vs[i][j] = reflecty(vi + i - 1, height); | |||||
| } | } | ||||
| } | } | ||||