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
3922{3922{
3923 float qv[4], temp[4], rqv[4];3923 float qv[4], temp[4], rqv[4];
3924 3924
3925 qv[0] = 0;3925 qv[0] = 0.f;
3926 qv[1] = vec[0];3926 qv[1] = vec[0];
3927 qv[2] = vec[1];3927 qv[2] = vec[1];
3928 qv[3] = vec[2];3928 qv[3] = vec[2];
@@ -4670,13 +4670,8 @@ static int config_output(AVFilterLink *outlink) · 741 unmodified lines
4670 return err;4670 return err;
4671 }4671 }
4672 4672
4673 s->rot_quaternion[0][0] = 1.f;4673 calculate_rotation(s->yaw, s->pitch, s->roll,
4674 s->rot_quaternion[0][1] = s->rot_quaternion[0][2] = s->rot_quaternion[0][3] = 0.f;4674 s->rot_quaternion, s->rotation_order);
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 }
4680 4675
4681 set_mirror_modifier(s->h_flip, s->v_flip, s->d_flip, s->output_mirror_modifier);4676 set_mirror_modifier(s->h_flip, s->v_flip, s->d_flip, s->output_mirror_modifier);
4682 4677
@@ -4712,8 +4707,11 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) · 29 unmodified lines
4712static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,4707static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
4713 char *res, int res_len, int flags)4708 char *res, int res_len, int flags)
4714{4709{
4710 V360Context *s = ctx->priv;
4715 int ret;4711 int ret;
4716 4712
4713 s->yaw = s->pitch = s->roll = 0.f;
4714
4717 ret = ff_filter_process_command(ctx, cmd, args, res, res_len, flags);4715 ret = ff_filter_process_command(ctx, cmd, args, res, res_len, flags);
4718 if (ret < 0)4716 if (ret < 0)
4719 return ret;4717 return ret;
@@ -4721,6 +4719,16 @@ static int process_command(AVFilterContext *ctx, const char *cmd, const char *ar · 1 unmodified line
4721 return config_output(ctx->outputs[0]);4719 return config_output(ctx->outputs[0]);
4722}4720}
4723 4721
4722static 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
4724static av_cold void uninit(AVFilterContext *ctx)4732static av_cold void uninit(AVFilterContext *ctx)
4725{4733{
4726 V360Context *s = ctx->priv;4734 V360Context *s = ctx->priv;
@@ -4762,6 +4770,7 @@ AVFilter ff_vf_v360 = { · 35 unmodified lines
4762 .name = "v360",4770 .name = "v360",
4763 .description = NULL_IF_CONFIG_SMALL("Convert 360 projection of video."),4771 .description = NULL_IF_CONFIG_SMALL("Convert 360 projection of video."),
4764 .priv_size = sizeof(V360Context),4772 .priv_size = sizeof(V360Context),
4773 .init = init,
4765 .uninit = uninit,4774 .uninit = uninit,
4766 .query_formats = query_formats,4775 .query_formats = query_formats,
4767 .inputs = inputs,4776 .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