mirror of https://git.ffmpeg.org/ffmpeg.git
lavfi/transpose: add support to named options and shortands
Allow extensibility.
This commit is contained in:
parent
c785b6db73
commit
6300062774
|
@ -3519,8 +3519,11 @@ Default mode is @code{merge}.
|
||||||
|
|
||||||
Transpose rows with columns in the input video and optionally flip it.
|
Transpose rows with columns in the input video and optionally flip it.
|
||||||
|
|
||||||
It accepts a parameter representing an integer, which can assume the
|
This filter accepts the following named parameters:
|
||||||
values:
|
|
||||||
|
@table @option
|
||||||
|
@item dir
|
||||||
|
Specify the transposition direction. Can assume the following values:
|
||||||
|
|
||||||
@table @samp
|
@table @samp
|
||||||
@item 0, 4
|
@item 0, 4
|
||||||
|
@ -3558,6 +3561,7 @@ l.r l.L
|
||||||
|
|
||||||
For values between 4-7 transposition is only done if the input video
|
For values between 4-7 transposition is only done if the input video
|
||||||
geometry is portrait and not landscape.
|
geometry is portrait and not landscape.
|
||||||
|
@end table
|
||||||
|
|
||||||
@section unsharp
|
@section unsharp
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_MAJOR 3
|
#define LIBAVFILTER_VERSION_MAJOR 3
|
||||||
#define LIBAVFILTER_VERSION_MINOR 19
|
#define LIBAVFILTER_VERSION_MINOR 19
|
||||||
#define LIBAVFILTER_VERSION_MICRO 100
|
#define LIBAVFILTER_VERSION_MICRO 101
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||||
LIBAVFILTER_VERSION_MINOR, \
|
LIBAVFILTER_VERSION_MINOR, \
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "libavutil/intreadwrite.h"
|
#include "libavutil/intreadwrite.h"
|
||||||
|
#include "libavutil/opt.h"
|
||||||
#include "libavutil/pixdesc.h"
|
#include "libavutil/pixdesc.h"
|
||||||
#include "libavutil/imgutils.h"
|
#include "libavutil/imgutils.h"
|
||||||
#include "libavutil/internal.h"
|
#include "libavutil/internal.h"
|
||||||
|
@ -37,6 +38,7 @@
|
||||||
#include "video.h"
|
#include "video.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
const AVClass *class;
|
||||||
int hsub, vsub;
|
int hsub, vsub;
|
||||||
int pixsteps[4];
|
int pixsteps[4];
|
||||||
|
|
||||||
|
@ -48,20 +50,25 @@ typedef struct {
|
||||||
int passthrough; ///< landscape passthrough mode enabled
|
int passthrough; ///< landscape passthrough mode enabled
|
||||||
} TransContext;
|
} TransContext;
|
||||||
|
|
||||||
|
#define OFFSET(x) offsetof(TransContext, x)
|
||||||
|
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
|
||||||
|
|
||||||
|
static const AVOption transpose_options[] = {
|
||||||
|
{ "dir", "set transpose direction", OFFSET(dir), AV_OPT_TYPE_INT, {.i64=0}, 0, 7, FLAGS },
|
||||||
|
{ NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
AVFILTER_DEFINE_CLASS(transpose);
|
||||||
|
|
||||||
static av_cold int init(AVFilterContext *ctx, const char *args)
|
static av_cold int init(AVFilterContext *ctx, const char *args)
|
||||||
{
|
{
|
||||||
TransContext *trans = ctx->priv;
|
TransContext *trans = ctx->priv;
|
||||||
trans->dir = 0;
|
const char *shorthand[] = { "dir", NULL };
|
||||||
|
|
||||||
if (args)
|
trans->class = &transpose_class;
|
||||||
sscanf(args, "%d", &trans->dir);
|
av_opt_set_defaults(trans);
|
||||||
|
|
||||||
if (trans->dir < 0 || trans->dir > 7) {
|
return av_opt_set_from_string(trans, args, shorthand, "=", ":");
|
||||||
av_log(ctx, AV_LOG_ERROR, "Invalid value %d not between 0 and 7.\n",
|
|
||||||
trans->dir);
|
|
||||||
return AVERROR(EINVAL);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int query_formats(AVFilterContext *ctx)
|
static int query_formats(AVFilterContext *ctx)
|
||||||
|
@ -262,4 +269,5 @@ AVFilter avfilter_vf_transpose = {
|
||||||
.config_props = config_props_output,
|
.config_props = config_props_output,
|
||||||
.type = AVMEDIA_TYPE_VIDEO, },
|
.type = AVMEDIA_TYPE_VIDEO, },
|
||||||
{ .name = NULL}},
|
{ .name = NULL}},
|
||||||
|
.priv_class = &transpose_class,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue