FFmpeg
Loading...
Searching...
No Matches
v360.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2019 Eugene Lyapustin
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#ifndef AVFILTER_V360_H
22#define AVFILTER_V360_H
23#include "avfilter.h"
24
31
60
72
82
84 RIGHT, ///< Axis +X
85 LEFT, ///< Axis -X
86 UP, ///< Axis +Y
87 DOWN, ///< Axis -Y
88 FRONT, ///< Axis -Z
89 BACK, ///< Axis +Z
91};
92
100
107
108typedef struct XYRemap {
109 int16_t u[4][4];
110 int16_t v[4][4];
111 float ker[4][4];
112} XYRemap;
113
114typedef struct SliceXYRemap {
115 int16_t *u[2], *v[2];
116 int16_t *ker[2];
117 uint8_t *mask;
119
120typedef struct V360Context {
121 const AVClass *class;
122 int in, out;
124 int alpha;
129 char *in_frot;
130 char *out_frot;
131 char *rorder;
132
138
140
143
144 float yaw, pitch, roll;
146
150
153 float flat_range[2];
154 float iflat_range[2];
155
156 float rot_quaternion[2][4];
157
159
162
164
167
177
180
181 int (*in_transform)(const struct V360Context *s,
182 const float *vec, int width, int height,
183 int16_t us[4][4], int16_t vs[4][4], float *du, float *dv);
184
185 int (*out_transform)(const struct V360Context *s,
186 int i, int j, int width, int height,
187 float *vec);
188
189 void (*calculate_kernel)(float du, float dv, const XYRemap *rmap,
190 int16_t *u, int16_t *v, int16_t *ker);
191
192 int (*remap_slice)(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs);
193
194 void (*remap_line)(uint8_t *dst, int width, const uint8_t *const src, ptrdiff_t in_linesize,
195 const int16_t *const u, const int16_t *const v, const int16_t *const ker);
197
198void ff_v360_init(V360Context *s, int depth);
199void ff_v360_init_x86(V360Context *s, int depth);
200
201#endif /* AVFILTER_V360_H */
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
static AVFormatContext * ctx
Main libavfilter public API header.
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define s(width, name)
Definition cbs_vp9.c:198
#define UP
Definition cdgraphics.c:166
#define DOWN
Definition cdgraphics.c:167
#define LEFT
Definition cdgraphics.c:168
#define RIGHT
Definition cdgraphics.c:169
#define u(width, name, range_min, range_max)
Definition cbs_apv.c:68
#define us(width, name, range_min, range_max, subs,...)
Definition cbs_apv.c:70
const char * arg
Definition jacosubdec.c:65
#define TOP_LEFT
Definition movtextdec.c:50
#define TOP_RIGHT
Definition movtextdec.c:52
#define BOTTOM_LEFT
Definition movtextdec.c:44
#define BOTTOM_RIGHT
Definition movtextdec.c:46
#define AV_VIDEO_MAX_PLANES
Maximum number of planes in any pixel format.
Definition pixfmt.h:40
Describe the class of an AVClass context structure.
Definition log.h:76
An instance of a filter.
Definition avfilter.h:273
uint8_t * mask
Definition v360.h:117
int16_t * u[2]
Definition v360.h:115
int16_t * v[2]
Definition v360.h:115
int16_t * ker[2]
Definition v360.h:116
int in_stereo
Definition v360.h:139
int pr_height[AV_VIDEO_MAX_PLANES]
Definition v360.h:163
int out_offset_h[AV_VIDEO_MAX_PLANES]
Definition v360.h:166
int v_flip
Definition v360.h:148
int(* in_transform)(const struct V360Context *s, const float *vec, int width, int height, int16_t us[4][4], int16_t vs[4][4], float *du, float *dv)
Definition v360.h:181
float yaw
Definition v360.h:144
int in_cubemap_face_order[6]
Definition v360.h:133
int nb_allocated
Definition v360.h:172
int h_flip
Definition v360.h:148
int uv_linesize[AV_VIDEO_MAX_PLANES]
Definition v360.h:170
int width
Definition v360.h:126
float d_fov
Definition v360.h:151
char * out_forder
Definition v360.h:128
int in_offset_h[AV_VIDEO_MAX_PLANES]
Definition v360.h:165
void(* remap_line)(uint8_t *dst, int width, const uint8_t *const src, ptrdiff_t in_linesize, const int16_t *const u, const int16_t *const v, const int16_t *const ker)
Definition v360.h:194
float roll
Definition v360.h:144
int inplaneheight[AV_VIDEO_MAX_PLANES]
Definition v360.h:169
float h_fov
Definition v360.h:151
float rot_quaternion[2][4]
Definition v360.h:156
int rotation_order[3]
Definition v360.h:137
SliceXYRemap * slice_remap
Definition v360.h:178
char * out_frot
Definition v360.h:130
float v_offset
Definition v360.h:145
int fin_pad
Definition v360.h:142
int interp
Definition v360.h:123
float in_pad
Definition v360.h:141
float h_offset
Definition v360.h:145
char * rorder
Definition v360.h:131
int in_height
Definition v360.h:160
int out_width
Definition v360.h:161
int d_flip
Definition v360.h:148
int out
Definition v360.h:122
int out_cubemap_face_rotation[6]
Definition v360.h:136
void(* calculate_kernel)(float du, float dv, const XYRemap *rmap, int16_t *u, int16_t *v, int16_t *ker)
Definition v360.h:189
int in_offset_w[AV_VIDEO_MAX_PLANES]
Definition v360.h:165
float iv_fov
Definition v360.h:152
int in_transpose
Definition v360.h:149
int iv_flip
Definition v360.h:147
int pr_width[AV_VIDEO_MAX_PLANES]
Definition v360.h:163
int nb_planes
Definition v360.h:171
float pitch
Definition v360.h:144
int ih_flip
Definition v360.h:147
float ih_fov
Definition v360.h:152
int mask_size
Definition v360.h:174
int max_value
Definition v360.h:175
float id_fov
Definition v360.h:152
int in_width
Definition v360.h:160
int nb_threads
Definition v360.h:176
int in
Definition v360.h:122
float v_fov
Definition v360.h:151
float out_pad
Definition v360.h:141
float iflat_range[2]
Definition v360.h:154
int reset_rot
Definition v360.h:125
int height
Definition v360.h:126
int out_transpose
Definition v360.h:149
int(* remap_slice)(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
Definition v360.h:192
unsigned map[AV_VIDEO_MAX_PLANES]
Definition v360.h:179
char * in_forder
Definition v360.h:127
int out_offset_w[AV_VIDEO_MAX_PLANES]
Definition v360.h:166
int out_height
Definition v360.h:161
int inplanewidth[AV_VIDEO_MAX_PLANES]
Definition v360.h:169
int alpha
Definition v360.h:124
int planewidth[AV_VIDEO_MAX_PLANES]
Definition v360.h:168
float output_mirror_modifier[3]
Definition v360.h:158
int out_cubemap_direction_order[6]
Definition v360.h:134
int(* out_transform)(const struct V360Context *s, int i, int j, int width, int height, float *vec)
Definition v360.h:185
float flat_range[2]
Definition v360.h:153
int fout_pad
Definition v360.h:142
int elements
Definition v360.h:173
int planeheight[AV_VIDEO_MAX_PLANES]
Definition v360.h:168
int out_stereo
Definition v360.h:139
char * in_frot
Definition v360.h:129
int in_cubemap_face_rotation[6]
Definition v360.h:135
int16_t u[4][4]
Definition v360.h:109
float ker[4][4]
Definition v360.h:111
int16_t v[4][4]
Definition v360.h:110
#define src
Definition vp8dsp.c:248
Faces
Definition v360.h:73
@ NB_FACES
Definition v360.h:80
@ TOP_MIDDLE
Definition v360.h:75
@ BOTTOM_MIDDLE
Definition v360.h:78
Direction
Definition v360.h:83
@ NB_DIRECTIONS
Definition v360.h:90
Rotation
Definition v360.h:93
@ ROT_90
Definition v360.h:95
@ ROT_270
Definition v360.h:97
@ ROT_0
Definition v360.h:94
@ ROT_180
Definition v360.h:96
@ NB_ROTATIONS
Definition v360.h:98
void ff_v360_init(V360Context *s, int depth)
Definition vf_v360.c:376
InterpMethod
Definition v360.h:61
@ SPLINE16
Definition v360.h:67
@ NB_INTERP_METHODS
Definition v360.h:70
@ LAGRANGE9
Definition v360.h:64
@ MITCHELL
Definition v360.h:69
@ BICUBIC
Definition v360.h:65
@ LANCZOS
Definition v360.h:66
@ GAUSSIAN
Definition v360.h:68
void ff_v360_init_x86(V360Context *s, int depth)
Projections
Definition v360.h:32
@ EQUISOLID
Definition v360.h:54
@ FLAT
Definition v360.h:37
@ FISHEYE
Definition v360.h:46
@ DUAL_FISHEYE
Definition v360.h:38
@ EQUIRECTANGULAR
Definition v360.h:33
@ PERSPECTIVE
Definition v360.h:49
@ TSPYRAMID
Definition v360.h:52
@ CUBEMAP_3_2
Definition v360.h:34
@ CUBEMAP_6_1
Definition v360.h:35
@ SINUSOIDAL
Definition v360.h:45
@ HEQUIRECTANGULAR
Definition v360.h:53
@ OCTAHEDRON
Definition v360.h:56
@ HAMMER
Definition v360.h:44
@ CUBEMAP_1_6
Definition v360.h:40
@ STEREOGRAPHIC
Definition v360.h:41
@ CYLINDRICAL
Definition v360.h:48
@ BALL
Definition v360.h:43
@ CYLINDRICALEA
Definition v360.h:57
@ PANNINI
Definition v360.h:47
@ BARREL_SPLIT
Definition v360.h:51
@ EQUIANGULAR
Definition v360.h:36
@ BARREL
Definition v360.h:39
@ NB_PROJECTIONS
Definition v360.h:58
@ TETRAHEDRON
Definition v360.h:50
@ MERCATOR
Definition v360.h:42
@ ORTHOGRAPHIC
Definition v360.h:55
StereoFormats
Definition v360.h:25
@ STEREO_SBS
Definition v360.h:27
@ STEREO_TB
Definition v360.h:28
@ STEREO_2D
Definition v360.h:26
@ NB_STEREO_FMTS
Definition v360.h:29
RotationOrder
Definition v360.h:101
@ ROLL
Definition v360.h:104
@ NB_RORDERS
Definition v360.h:105
@ YAW
Definition v360.h:102
@ PITCH
Definition v360.h:103
#define NEAREST(type, name)
#define BILINEAR(type, name)
#define BACK
Definition vf_ssim360.c:62
#define FRONT
Definition vf_ssim360.c:61