History

avfilter/vf_v360: make commands always do relative rotation

Paul B Mahol committed 6 years ago

Commit d6e903b1 parent 0d395761 file · +17 −8Browse files

Unified · Split

libavfilter/vf_v360.c+17−8
@@ -3922,7 +3922,7 @@ static inline void rotate(const float rot_quaternion[2][4], · 3921 unmodified lines
39223922 {
39233923 float qv[4], temp[4], rqv[4];
39243924
3925− qv[0] = 0;
3925+ qv[0] = 0.f;
39263926 qv[1] = vec[0];
39273927 qv[2] = vec[1];
39283928 qv[3] = vec[2];
@@ -4670,13 +4670,8 @@ static int config_output(AVFilterLink *outlink) · 741 unmodified lines
46704670 return err;
46714671 }
46724672
4673− s->rot_quaternion[0][0] = 1.f;
4674− s->rot_quaternion[0][1] = s->rot_quaternion[0][2] = s->rot_quaternion[0][3] = 0.f;
4675−
4676− for (int i = 0; i < 4; i++) {
4677− calculate_rotation(s->yaw * 0.25f, s->pitch * 0.25f, s->roll * 0.25f,
4678− s->rot_quaternion, s->rotation_order);
4679− }
4673+ calculate_rotation(s->yaw, s->pitch, s->roll,
4674+ s->rot_quaternion, s->rotation_order);
46804675
46814676 set_mirror_modifier(s->h_flip, s->v_flip, s->d_flip, s->output_mirror_modifier);
46824677
@@ -4712,8 +4707,11 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) · 29 unmodified lines
47124707 static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
47134708 char *res, int res_len, int flags)
47144709 {
4710+ V360Context *s = ctx->priv;
47154711 int ret;
47164712
4713+ s->yaw = s->pitch = s->roll = 0.f;
4714+
47174715 ret = ff_filter_process_command(ctx, cmd, args, res, res_len, flags);
47184716 if (ret < 0)
47194717 return ret;
@@ -4721,6 +4719,16 @@ static int process_command(AVFilterContext *ctx, const char *cmd, const char *ar · 1 unmodified line
47214719 return config_output(ctx->outputs[0]);
47224720 }
47234721
4722+static av_cold int init(AVFilterContext *ctx)
4723+{
4724+ V360Context *s = ctx->priv;
4725+
4726+ s->rot_quaternion[0][0] = 1.f;
4727+ s->rot_quaternion[0][1] = s->rot_quaternion[0][2] = s->rot_quaternion[0][3] = 0.f;
4728+
4729+ return 0;
4730+}
4731+
47244732 static av_cold void uninit(AVFilterContext *ctx)
47254733 {
47264734 V360Context *s = ctx->priv;
@@ -4762,6 +4770,7 @@ AVFilter ff_vf_v360 = { · 35 unmodified lines
47624770 .name = "v360",
47634771 .description = NULL_IF_CONFIG_SMALL("Convert 360 projection of video."),
47644772 .priv_size = sizeof(V360Context),
4773+ .init = init,
47654774 .uninit = uninit,
47664775 .query_formats = query_formats,
47674776 .inputs = inputs,

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t