|
FFmpeg
|
This structure describes how to handle spherical videos, outlining information about projection, initial layout, and any other view modifier. More...
#include <spherical.h>
Public Attributes | |
| enum AVSphericalProjection | projection |
| Projection type. | |
| uint32_t | padding |
| Number of pixels to pad from the edge of each cube face. More... | |
Initial orientation | |
There fields describe additional rotations applied to the sphere after the video frame is mapped onto it. The sphere is rotated around the viewer, who remains stationary. The order of transformation is always yaw, followed by pitch, and finally by roll. The coordinate system matches the one defined in OpenGL, where the forward vector (z) is coming out of screen, and it is equivalent to a rotation matrix of R = r_y(yaw) * r_x(pitch) * r_z(roll). A positive yaw rotates the portion of the sphere in front of the viewer toward their right. A positive pitch rotates the portion of the sphere in front of the viewer upwards. A positive roll tilts the portion of the sphere in front of the viewer to the viewer's right. These values are exported as 16.16 fixed point. See this equirectangular projection as example: Yaw -180 0 180 90 +-------------+-------------+ 180 | | | up P | | | y| forward i | ^ | | /z t 0 +-------------X-------------+ 0 Roll | / c | | | | / h | | | 0|/_____right | | | x -90 +-------------+-------------+ -180 X - the default camera center ^ - the default up vector | |
| int32_t | yaw |
| Rotation around the up vector [-180, 180]. | |
| int32_t | pitch |
| Rotation around the right vector [-90, 90]. | |
| int32_t | roll |
| Rotation around the forward vector [-180, 180]. | |
Bounding rectangle | |
These fields indicate the location of the current tile, and where it should be mapped relative to the original surface. They are exported as 0.32 fixed point, and can be converted to classic pixel values with av_spherical_bounds(). +----------------+----------+ | |bound_top | | +--------+ | | bound_left |tile | | +<---------->| |<--->+bound_right | +--------+ | | | | | bound_bottom| | +----------------+----------+ If needed, the original video surface dimensions can be derived by adding the current stream or frame size to the related bounds, like in the following example: original_width = tile->width + bound_left + bound_right; original_height = tile->height + bound_top + bound_bottom;
| |
| uint32_t | bound_left |
| Distance from the left edge. | |
| uint32_t | bound_top |
| Distance from the top edge. | |
| uint32_t | bound_right |
| Distance from the right edge. | |
| uint32_t | bound_bottom |
| Distance from the bottom edge. | |
This structure describes how to handle spherical videos, outlining information about projection, initial layout, and any other view modifier.
| uint32_t AVSphericalMapping::padding |
Number of pixels to pad from the edge of each cube face.
1.8.12