Commit 2dfd9445 authored by Paul B Mahol's avatar Paul B Mahol

avfilter/vf_v360: improve tetrahedron input format at frame borders

parent 50a13b98
...@@ -622,6 +622,39 @@ static inline int mod(int a, int b) ...@@ -622,6 +622,39 @@ static inline int mod(int a, int b)
} }
} }
/**
* Reflect y operation.
*
* @param y input vertical position
* @param h input height
*/
static inline int reflecty(int y, int h)
{
if (y < 0) {
return -y;
} else if (y >= h) {
return 2 * h - 1 - y;
}
return y;
}
/**
* Reflect x operation.
*
* @param x input horizontal position
* @param y input vertical position
* @param w input width
* @param h input height
*/
static inline int reflectx(int x, int y, int w, int h)
{
if (y < 0 || y >= h)
return w - 1 - x;
return mod(x, w);
}
/** /**
* Convert char to corresponding direction. * Convert char to corresponding direction.
* Used for cubemap options. * Used for cubemap options.
...@@ -2746,8 +2779,8 @@ static int xyz_to_tetrahedron(const V360Context *s, ...@@ -2746,8 +2779,8 @@ static int xyz_to_tetrahedron(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); us[i][j] = reflectx(ui + j - 1, vi + i - 1, width, height);
vs[i][j] = av_clip(vi + i - 1, 0, height - 1); vs[i][j] = reflecty(vi + i - 1, height);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment