Unless -1 value is provided then rotation is reset single time.
Unified · Split
| @@ -164,7 +164,7 @@ static const AVOption v360_options[] = { · 163 unmodified lines | |||
| 164 | { "iv_fov", "input vertical field of view", OFFSET(iv_fov), AV_OPT_TYPE_FLOAT, {.dbl=0.f}, 0.f, 360.f,TFLAGS, "iv_fov"}, | 164 | { "iv_fov", "input vertical field of view", OFFSET(iv_fov), AV_OPT_TYPE_FLOAT, {.dbl=0.f}, 0.f, 360.f,TFLAGS, "iv_fov"}, |
| 165 | { "id_fov", "input diagonal field of view", OFFSET(id_fov), AV_OPT_TYPE_FLOAT, {.dbl=0.f}, 0.f, 360.f,TFLAGS, "id_fov"}, | 165 | { "id_fov", "input diagonal field of view", OFFSET(id_fov), AV_OPT_TYPE_FLOAT, {.dbl=0.f}, 0.f, 360.f,TFLAGS, "id_fov"}, |
| 166 | {"alpha_mask", "build mask in alpha plane", OFFSET(alpha), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS, "alpha"}, | 166 | {"alpha_mask", "build mask in alpha plane", OFFSET(alpha), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS, "alpha"}, |
| 167 | { "reset_rot", "reset rotation", OFFSET(reset_rot), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1,TFLAGS, "reset_rot"}, | 167 | { "reset_rot", "reset rotation", OFFSET(reset_rot), AV_OPT_TYPE_BOOL, {.i64=0}, -1, 1,TFLAGS, "reset_rot"}, |
| 168 | { NULL } | 168 | { NULL } |
| 169 | }; | 169 | }; |
| 170 | 170 | ||
| @@ -4962,7 +4962,8 @@ static int process_command(AVFilterContext *ctx, const char *cmd, const char *ar · 4791 unmodified lines | |||
| 4962 | int ret; | 4962 | int ret; |
| 4963 | 4963 | ||
| 4964 | s->yaw = s->pitch = s->roll = 0.f; | 4964 | s->yaw = s->pitch = s->roll = 0.f; |
| 4965 | s->reset_rot = 0; | 4965 | if (s->reset_rot < 0) |
| 4966 | s->reset_rot = 0; | ||
| 4966 | 4967 | ||
| 4967 | ret = ff_filter_process_command(ctx, cmd, args, res, res_len, flags); | 4968 | ret = ff_filter_process_command(ctx, cmd, args, res, res_len, flags); |
| 4968 | if (ret < 0) | 4969 | if (ret < 0) |