X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fv360.h;h=87770664a359e801073cddef528b08635de0ec84;hb=4e3c4dfbf31243c6abda282439ebd5d16199b4ff;hp=4b2351f1778f616d001dcc20191649614c62a3e2;hpb=3dd81be866bf7d1ad4f8dce642616a100245f94b;p=ffmpeg diff --git a/libavfilter/v360.h b/libavfilter/v360.h index 4b2351f1778..87770664a35 100644 --- a/libavfilter/v360.h +++ b/libavfilter/v360.h @@ -50,16 +50,22 @@ enum Projections { TETRAHEDRON, BARREL_SPLIT, TSPYRAMID, + HEQUIRECTANGULAR, + EQUISOLID, + ORTHOGRAPHIC, + OCTAHEDRON, NB_PROJECTIONS, }; enum InterpMethod { NEAREST, BILINEAR, + LAGRANGE9, BICUBIC, LANCZOS, SPLINE16, GAUSSIAN, + MITCHELL, NB_INTERP_METHODS, }; @@ -104,6 +110,12 @@ typedef struct XYRemap { float ker[4][4]; } XYRemap; +typedef struct SliceXYRemap { + int16_t *u[2], *v[2]; + int16_t *ker[2]; + uint8_t *mask; +} SliceXYRemap; + typedef struct V360Context { const AVClass *class; int in, out; @@ -138,9 +150,8 @@ typedef struct V360Context { float flat_range[2]; float iflat_range[2]; - float rot_mat[3][3]; + float rot_quaternion[2][4]; - float input_mirror_modifier[2]; float output_mirror_modifier[3]; int in_width, in_height; @@ -159,10 +170,9 @@ typedef struct V360Context { int elements; int mask_size; int max_value; + int nb_threads; - int16_t *u[2], *v[2]; - int16_t *ker[2]; - uint8_t *mask; + SliceXYRemap *slice_remap; unsigned map[4]; int (*in_transform)(const struct V360Context *s,