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
61
73
83
85 RIGHT, ///< Axis +X
86 LEFT, ///< Axis -X
87 UP, ///< Axis +Y
88 DOWN, ///< Axis -Y
89 FRONT, ///< Axis -Z
90 BACK, ///< Axis +Z
92};
93
101
108
109typedef struct XYRemap {
110 int16_t u[4][4];
111 int16_t v[4][4];
112 float ker[4][4];
113} XYRemap;
114
115typedef struct SliceXYRemap {
116 int16_t *u[2], *v[2];
117 int16_t *ker[2];
118 uint8_t *mask;
120
121typedef struct V360Context {
122 const AVClass *class;
123 int in, out;
125 int alpha;
130 char *in_frot;
131 char *out_frot;
132 char *rorder;
133
139
141
144
145 float yaw, pitch, roll;
147
151
154 float flat_range[2];
155 float iflat_range[2];
156
157 float rot_quaternion[2][4];
158
160
163
165
168
178
181
182 int (*in_transform)(const struct V360Context *s,
183 const float *vec, int width, int height,
184 int16_t us[4][4], int16_t vs[4][4], float *du, float *dv);
185
186 int (*out_transform)(const struct V360Context *s,
187 int i, int j, int width, int height,
188 float *vec);
189
190 void (*calculate_kernel)(float du, float dv, const XYRemap *rmap,
191 int16_t *u, int16_t *v, int16_t *ker);
192
193 int (*remap_slice)(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs);
194
195 void (*remap_line)(uint8_t *dst, int width, const uint8_t *const src, ptrdiff_t in_linesize,
196 const int16_t *const u, const int16_t *const v, const int16_t *const ker);
198
199void ff_v360_init(V360Context *s, int depth);
200void ff_v360_init_x86(V360Context *s, int depth);
201
202#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:97
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:279
uint8_t * mask
Definition v360.h:118
int16_t * u[2]
Definition v360.h:116
int16_t * v[2]
Definition v360.h:116
int16_t * ker[2]
Definition v360.h:117
int in_stereo
Definition v360.h:140
int pr_height[AV_VIDEO_MAX_PLANES]
Definition v360.h:164
int out_offset_h[AV_VIDEO_MAX_PLANES]
Definition v360.h:167
int v_flip
Definition v360.h:149
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:182
float yaw
Definition v360.h:145
int in_cubemap_face_order[6]
Definition v360.h:134
int nb_allocated
Definition v360.h:173
int h_flip
Definition v360.h:149
int uv_linesize[AV_VIDEO_MAX_PLANES]
Definition v360.h:171
int width
Definition v360.h:127
float d_fov
Definition v360.h:152
char * out_forder
Definition v360.h:129
int in_offset_h[AV_VIDEO_MAX_PLANES]
Definition v360.h:166
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:195
float roll
Definition v360.h:145
int inplaneheight[AV_VIDEO_MAX_PLANES]
Definition v360.h:170
float h_fov
Definition v360.h:152
float rot_quaternion[2][4]
Definition v360.h:157
int rotation_order[3]
Definition v360.h:138
SliceXYRemap * slice_remap
Definition v360.h:179
char * out_frot
Definition v360.h:131
float v_offset
Definition v360.h:146
int fin_pad
Definition v360.h:143
int interp
Definition v360.h:124
float in_pad
Definition v360.h:142
float h_offset
Definition v360.h:146
char * rorder
Definition v360.h:132
int in_height
Definition v360.h:161
int out_width
Definition v360.h:162
int d_flip
Definition v360.h:149
int out
Definition v360.h:123
int out_cubemap_face_rotation[6]
Definition v360.h:137
void(* calculate_kernel)(float du, float dv, const XYRemap *rmap, int16_t *u, int16_t *v, int16_t *ker)
Definition v360.h:190
int in_offset_w[AV_VIDEO_MAX_PLANES]
Definition v360.h:166
float iv_fov
Definition v360.h:153
int in_transpose
Definition v360.h:150
int iv_flip
Definition v360.h:148
int pr_width[AV_VIDEO_MAX_PLANES]
Definition v360.h:164
int nb_planes
Definition v360.h:172
float pitch
Definition v360.h:145
int ih_flip
Definition v360.h:148
float ih_fov
Definition v360.h:153
int mask_size
Definition v360.h:175
int max_value
Definition v360.h:176
float id_fov
Definition v360.h:153
int in_width
Definition v360.h:161
int nb_threads
Definition v360.h:177
int in
Definition v360.h:123
float v_fov
Definition v360.h:152
float out_pad
Definition v360.h:142
float iflat_range[2]
Definition v360.h:155
int reset_rot
Definition v360.h:126
int height
Definition v360.h:127
int out_transpose
Definition v360.h:150
int(* remap_slice)(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
Definition v360.h:193
unsigned map[AV_VIDEO_MAX_PLANES]
Definition v360.h:180
char * in_forder
Definition v360.h:128
int out_offset_w[AV_VIDEO_MAX_PLANES]
Definition v360.h:167
int out_height
Definition v360.h:162
int inplanewidth[AV_VIDEO_MAX_PLANES]
Definition v360.h:170
int alpha
Definition v360.h:125
int planewidth[AV_VIDEO_MAX_PLANES]
Definition v360.h:169
float output_mirror_modifier[3]
Definition v360.h:159
int out_cubemap_direction_order[6]
Definition v360.h:135
int(* out_transform)(const struct V360Context *s, int i, int j, int width, int height, float *vec)
Definition v360.h:186
float flat_range[2]
Definition v360.h:154
int fout_pad
Definition v360.h:143
int elements
Definition v360.h:174
int planeheight[AV_VIDEO_MAX_PLANES]
Definition v360.h:169
int out_stereo
Definition v360.h:140
char * in_frot
Definition v360.h:130
int in_cubemap_face_rotation[6]
Definition v360.h:136
int16_t u[4][4]
Definition v360.h:110
float ker[4][4]
Definition v360.h:112
int16_t v[4][4]
Definition v360.h:111
#define src
Definition vp8dsp.c:248
Faces
Definition v360.h:74
@ NB_FACES
Definition v360.h:81
@ TOP_MIDDLE
Definition v360.h:76
@ BOTTOM_MIDDLE
Definition v360.h:79
Direction
Definition v360.h:84
@ NB_DIRECTIONS
Definition v360.h:91
Rotation
Definition v360.h:94
@ ROT_90
Definition v360.h:96
@ ROT_270
Definition v360.h:98
@ ROT_0
Definition v360.h:95
@ ROT_180
Definition v360.h:97
@ NB_ROTATIONS
Definition v360.h:99
void ff_v360_init(V360Context *s, int depth)
Definition vf_v360.c:376
InterpMethod
Definition v360.h:62
@ SPLINE16
Definition v360.h:68
@ NB_INTERP_METHODS
Definition v360.h:71
@ LAGRANGE9
Definition v360.h:65
@ MITCHELL
Definition v360.h:70
@ BICUBIC
Definition v360.h:66
@ LANCZOS
Definition v360.h:67
@ GAUSSIAN
Definition v360.h:69
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
@ GOPROMAX
Definition v360.h:58
@ 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:59
@ 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:102
@ ROLL
Definition v360.h:105
@ NB_RORDERS
Definition v360.h:106
@ YAW
Definition v360.h:103
@ PITCH
Definition v360.h:104
#define NEAREST(type, name)
#define BILINEAR(type, name)
#define BACK
Definition vf_ssim360.c:62
#define FRONT
Definition vf_ssim360.c:61