summaryrefslogtreecommitdiff
path: root/libavutil/spherical.c
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2017-02-10 15:26:55 -0500
committerVittorio Giovara <vittorio.giovara@gmail.com>2017-03-07 11:19:37 -0500
commit1b7ffddb3a999f37443c58232b112534c0abcf28 (patch)
treefe8dde32203382b08df941426c72e0a6998c790e /libavutil/spherical.c
parent776f289c0fe82c4e3418a7c504ae3247eb10ffd7 (diff)
downloadffmpeg-1b7ffddb3a999f37443c58232b112534c0abcf28.tar.gz
spherical: Add tiled equirectangular type and projection-specific properties
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Diffstat (limited to 'libavutil/spherical.c')
-rw-r--r--libavutil/spherical.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/libavutil/spherical.c b/libavutil/spherical.c
index 816452cbd6..0ca2dd367a 100644
--- a/libavutil/spherical.c
+++ b/libavutil/spherical.c
@@ -32,3 +32,21 @@ AVSphericalMapping *av_spherical_alloc(size_t *size)
return spherical;
}
+
+void av_spherical_tile_bounds(AVSphericalMapping *map,
+ size_t width, size_t height,
+ size_t *left, size_t *top,
+ size_t *right, size_t *bottom)
+{
+ /* conversion from 0.32 coordinates to pixels */
+ uint64_t orig_width = (uint64_t) width * UINT32_MAX /
+ (UINT32_MAX - map->bound_right - map->bound_left);
+ uint64_t orig_height = (uint64_t) height * UINT32_MAX /
+ (UINT32_MAX - map->bound_bottom - map->bound_top);
+
+ /* add a (UINT32_MAX - 1) to round up integer division */
+ *left = (orig_width * map->bound_left + UINT32_MAX - 1) / UINT32_MAX;
+ *top = (orig_height * map->bound_top + UINT32_MAX - 1) / UINT32_MAX;
+ *right = orig_width - width - *left;
+ *bottom = orig_height - height - *top;
+}